“this”关键字在 JavaScript 中的对象字面量中的行为方式
在 JavaScript 中,“this”关键字指的是当前对象函数被调用。然而,“this”的绑定可能会令人困惑,尤其是在对象文字中使用时。
在对象文字中,“this”的值并不绑定到对象本身,而是绑定到全局对象(浏览器中的窗口)。这可能会导致意外的行为,如以下代码所示:
var obj1 = { foo: new Date(), bar: new MyDate(this.foo) // this.foo is undefined };
在此示例中,“this.foo”在 MyDate 的构造函数中未定义,因为“this”引用全局对象,该对象没有名为“foo”的属性。
要解决此问题,您可以使用 bind() 在对象文字中显式绑定“this”方法:
var obj4 = {}; obj4.foo = new Date(); obj4.bar = new MyDate(obj4.foo.bind(obj4));
这确保 MyDate 构造函数中的“this”引用正确的对象(obj4)。
或者,您可以使用箭头函数绑定“this”到对象:
var obj3 = { foo: new Date(), bar: new MyDate(() => this.foo) };
在箭头函数中,“this”在定义时绑定到周围的范围,在本例中是对象本身。
以上是'this” 关键字在 JavaScript 对象文字中的行为如何?的详细内容。更多信息请关注PHP中文网其他相关文章!