首页 新闻 搜索 专区 学院

this作用域问题?

-1
[已解决问题] 解决于 2021-09-27 11:28
var obj = {
    x: 100,
    y: function () {
        setTimeout(
            function () { alert(this.x); } //这里的this指向的是window对象,并不是我们期待的obj,所以会弹出undefined 
            , 2000);
    }
};

obj.y();

为什么this.x是undefined ,function是对象方法,this不应该指向obj吗

js
唉我干啥啊的主页 唉我干啥啊 | 初学一级 | 园豆:102
提问于:2021-09-27 09:47
< >
分享
最佳答案
-1

看了各位大佬的回答,但还是不明白。
我在网上看到说,“匿名对象的执行环境具有全局性,所以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

唉我干啥啊 | 初学一级 |园豆:102 | 2021-09-27 11:26

给-1的可以把你的观点回复出来吗?技术是需要交流是,你直接给-1还不说为什么?

唉我干啥啊 | 园豆:102 (初学一级) | 2021-09-27 14:22
其他回答(2)
0

理解一下, 看能不能理解.

var obj = {

    x: 100,

    y: function () {
        var selfX = this.x;
        setTimeout(
            function () { alert(selfX); }  //output 100
            , 2000);
    }
};
obj.y();
czd890 | 园豆:12597 (专家六级) | 2021-09-27 10:13

是说setTimeout内的方法this指向的是obj.y,setTimeout外的方法this指向的才是obj吗

支持(0) 反对(0) 唉我干啥啊 | 园豆:102 (初学一级) | 2021-09-27 10:34
0

function 函数的this 指向这个函数的调用者,箭头函数的this 指向 箭头函数上级的this ;

diudiu1 | 园豆:726 (小虾三级) | 2021-09-27 11:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册