簡體   English   中英

我一直在使用以下代碼,但這在javascript中是什么意思?

[英]I have been using following code but what does it mean in javascript?

我在項目中一直使用這些行,但是我不知道它的確切含義,有人可以告訴我它的確切含義是什么。

var myObject = window.myObject || {};

(function () { 

  //....my logic will go here

}).call(myObject);
 var myObject = window.myObject || {};

那將在全局范圍內聲明myObject 如果它在獲取現有值之前就已經存在, 或者如果不存在,則將其分配給新的空對象( Read on )。 如果多個腳本分配了同一對象的屬性,則這是一種常見的技術,因此,首先執行哪個腳本並不重要,它們總是會得到相同的結果。

(function() { }).call(myObject)

在上下文獲取myObject的情況下,這就是IIFE ,它使您可以輕松地使用

this.someProp = someValue;

IIFE還確保您在函數內部聲明的變量,例如:

var someValue = 1;

不是全局范圍的一部分,因此它們不會污染全局名稱空間。

var myObject = window.myObject || {}; // 1

(function () {                        //2

  //....my logic will go here

}).call(myObject);                    //3
  1. window (DOM窗口)對象的現有myObject屬性創建一個名為myObject的變量,或者,如果不存在,則創建一個新的空對象( {} )。
  2. 聲明立即調用的函數表達式( IIFE )。
  3. 通過提供先前創建的myObject對象(或從window檢索的對象,如果那里可用)來調用IIFE。

注意,在IIFE中,您可以根據需要訪問myObject 請參見下面的代碼片段,該打印對象是如何通過鍵custom和與值相關的value

 var myObject = window.myObject || { custom: 'value' }; (function() { console.log(myObject); }).call(myObject); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM