this指向

为啥这个输出的是全局啊,麻烦各位大神说的详细一点clipboard.png

阅读 3.2k
5 个回答

简单来说是因为函数中this指向调用这个方法的对象, 但是在saySex:function(){}中,并没有明确的对象调用getSex(),所有默认是window在调用;


var obj = {
    ...
    saySex:function(){
        console.log(this) //此处this指向obj,因为你能够调用saySex,必然是obj.saySex()通过obj调用;
        //getSex()在saySex函数内部定义的函数,作用域在函数内部,所以对于是谁在调用saySex,getSex无法知道,除非你告诉它;
        var that = this;
        function getSex(){
            console.log("this.sex=" + this.sex);
            console.log(that.sex); //此处可以取到你想要的值;
        }
        getSex(); //此处并没有明确的对象调用getSex,所以默认全局调用;
    },

...
}

默认的指向是window啊。你的getSex又么有绑在对象上

你这个this指的不是window,指的是当前那个对象,具体可以看看我那个博客里面关于this那一段,你就明白了.https://1657413883.github.io/...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题