JavaScript:使用物件文字在自己的函數中引用鍵
問題:
使用物件時JavaScript 中的文字通常包含對物件屬性進行操作的函數。但是,有兩種方法可以在這些函數中引用物件:使用 this 或明確使用物件文字名稱。本文探討了每種方法的涵義。
解決方案:
使用此:
var obj = {
key1: "it",
key2: function(){return this.key1 + " works!"}
};
登入後複製
- 使用 this引用函數內的對象可確保函數始終存取正確的對象,無論該對像如何
- 但是,如果函數是從對像中提取的(例如,分配給變數或作為參數傳遞),則this 可能不會如預期引用該物件。
使用物件文字名稱:
var obj = {
key1: "it",
key2: function(){return obj.key1 + " works!"}
};
登入後複製
- 明確使用物件字面量名稱(例如obj)在函數內引用物件可確保函數始終能夠存取該物件。
- 但是,這種方法可能會導致物件的意外修改或覆寫。如果建立對該物件的另一個參考並指派不同的值,則函數將繼續引用原始物件。
潛在問題:
-
使用此:當從物件中提取函數時,this 可能引用全域物件(視窗中的瀏覽器)而不是預期的物件。
-
使用物件文字名稱:當物件被重新指派或修改時,函數可能會引用原始物件而不是更新後的物件一。
建議:
-
根據預期用途選擇方法:如果函數主要用於用作物件的方法。如果函數可能被提取並重複使用,請使用物件字面量名稱。
-
使用 ES6 const 或閉包: 在 ES6 中,使用 const 來防止物件被重新分配。在 ES5 中,使用閉包建立本機作用域並儲存物件。
-
將函數綁定到物件: 使用 obj.key2 = obj.key2.bind(obj) 來確保函數始終引用正確的物件。
以上是如何在 JavaScript 物件文字中最好地引用物件鍵在其自己的函數中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!