5 个回答

第一个括号返回的这个函数并不是object的方法,其就是一个普通函数,其this指向window

分开执行就好理解些了。

第一步执行

object.getName()

此时得到返回的函数:

function (){
    return this
}

第二步执行这个返回的函数,此时要明白的是你执行这个函数的时候,它是在window下执行的。所以this应该就是如图打印的。


函数要看执行环境!

嵌套函数的this是指向window的

对象函数里面的this是指向该对象的

如:

var a  = {
    getName: function(){
        console.log(this);
        function b() {
            console.log(this);
        }
        b();
    }
}

a.getName();    // 输出出来,第一个this是Object a, 第二个输出出来是window

是的,已经和object没任何关系了

object.getName()();
object.getName():返回一个function() {return this;}
现在object.getName()()就相当于function() {return this;}(),此时的上下文为全局对象Window,即this指向window

推荐问题