obj = {
a: 123,
b: this.a
c: function () {
return this.a;
}
};
obj.b; // undefined
obj.c(); // 123
请问这是为什么?
谢谢大家为我解答这个问题,现在我已经明白是怎么回事了。
总结一下:
1、在全局运行上下文中(在任何函数体外部),this 指代全局对象,无论是否在严格模式下。
2、在函数内部,this的值取决于函数是如何调用的。
感谢 @不爱吃西红柿的鱼
分享一下他的文章,让我受益匪浅:js中this的一些总结
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
谢邀。你这是对象字面量的形式在申明一个对象变量。
相当于
此时的this指向的是不是obj这个对象,而是当前作用域空间的那个this指向。
这是作用域问题,你
b属性里的this其实是指向了父级作用域,这个对象本身无法创建作用域,所以你的this.a指向了与obj平级的a,但是你并没有定义过这样的a,于是就是undefined了.你可以通过函数来创建一个作用域
如果你觉得
obj.b()麻烦,还可以这样玩这个this指向的window
你要明白,那个this的指针,并不是指向obj的,而是指向的window,而window内并没有声明a,所以返回undefined: