就在我认为我终于理解Javascript范围的时候

mor*_*des 5 javascript scope

我遇到的东西说明了我显然还没有得到它.

任何人都可以解释为什么"这个"的价值在以下变化?

var MyFunc = function(){
    alert(this);
    var innerFunc = function(){
        alert(this);
    }
    innerFunc();
};

new MyFunc();
Run Code Online (Sandbox Code Playgroud)

Sho*_*og9 18

在JavaScript中,this表示调用函数的上下文对象,而不是定义它的范围(或调用它的范围).因为MyFunc,这引用了正在创建的新对象; 但是innerFunc,它引用了全局对象,因为在innerFunc调用时没有指定上下文.

这往往this会使那些习惯于Java或类似OO语言的语言绊倒,其中几乎总是引用定义被调用方法的类的实例.请记住:JavaScript没有方法.或者课程.只是对象和功能.

另请参阅:JavaScript中"this"关键字行为的基本原理是什么?