首页 > web前端 > js教程 > 'this” 关键字在 JavaScript 对象文字中的行为如何?

'this” 关键字在 JavaScript 对象文字中的行为如何?

DDD
发布: 2024-12-26 03:24:08
原创
639 人浏览过

How Does the `this` Keyword Behave Inside a JavaScript Object Literal?

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板