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中文网其他相关文章!