范围内的一个对象的功能?

时间:2018-05-25 02:04:33

标签: javascript object scope this

“this”在logColor函数中给出myCar对象引用但是在func函数内部给出了窗口对象引用的原因?

var myCar = {
    color: "Blue",
    logColor: function() {
        var self = this;
        console.log("In logColor - this.color: " + this.color);
        console.log("In logColor - self.color: " + self.color);
        var func=function() {
            console.log("In IIFE - this.color: " + this.color);
            console.log("In IIFE - self.color: " + self.color);
        }
       func();
    }
};
 
myCar.logColor();

这可能对专家javascript开发者没有意义,但我的基础知识非常动摇

1 个答案:

答案 0 :(得分:1)

您可以使用 ES-6粗箭头符号完成任务。发生这种情况是因为在对象的闭包内始终指向全局范围。

var myCar = {
    color: "Blue",
    logColor: function() {
        var self = this;
        console.log("In logColor - this.color: " + this.color);
        console.log("In logColor - self.color: " + self.color);
        var func=() => {
            console.log("In IIFE - this.color: " + this.color);
            console.log("In IIFE - self.color: " + self.color);
        }
       func();
    }
}