var obj = {
x: 100,
y: function () {
setTimeout(
function () { alert(this.x); } //这里的this指向的是window对象,并不是我们期待的obj,所以会弹出undefined
, 2000);
}
};
obj.y();
为什么this.x是undefined ,function是对象方法,this不应该指向obj吗
看了各位大佬的回答,但还是不明白。
我在网上看到说,“匿名对象的执行环境具有全局性,所以this
是指向window
的”
知乎上有人回答原因,我引用一下
Anonymous functions are not bound to an object in this context, meaning the this object points to window unless executing in strict mode (where this is undefined).
翻译:在这个上下文(执行环境)中匿名函数并没有绑定到任何一个对象中,意味着this指向window(除非这个上下文(执行环境)是在严格模式下执行的,而严格模式下该this指向undefined)
作者:月夕
链接:https://www.zhihu.com/question/21958425/answer/278063919
给-1的可以把你的观点回复出来吗?技术是需要交流是,你直接给-1还不说为什么?
理解一下, 看能不能理解.
var obj = {
x: 100,
y: function () {
var selfX = this.x;
setTimeout(
function () { alert(selfX); } //output 100
, 2000);
}
};
obj.y();
是说setTimeout
内的方法this指向的是obj.y,setTimeout
外的方法this指向的才是obj吗
function 函数的this 指向这个函数的调用者,箭头函数的this 指向 箭头函数上级的this ;