炫意html5
最早CSS3和HTML5移动技术网站之一

this作用域问题?

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

炫意HTML5 » this作用域问题?

Java基础教程Android基础教程