今天看到闭包,被this搞蒙了,求解答。。。

var name = "window";
var object = {
    name: "My Object",
    getNameFunc: function(){
        return function(){
        return this.name;
            };
        }
   };
alert(object.getNameFunc()());  //"window"
var name = "window";
var object = {
    name: "My Object",
    getNameFunc: function(){
        var that = this;
        return function(){
        return that.name;
        };
    }
};
alert(object.getNameFunc()());  //My Obect

先来个经典的例子,首先那个第一个this是怎么变成全局对象的?

在JS高级程序设计中这样解释:每个函数在被调用时,其活动对象都会自动取得两个特殊变量:this 和 arguments。内部函数在搜索这两个变量时,只会搜索到其活动对象为止,因此永远不可能直接访问外部函数中这两个变量。

只会搜索到活动对象这个是明白的,再往下就不懂了。。。

comlejade
浏览 1670回答 1
1回答

木子舟义

每一个没有用 someobject.somefunc()  这样调用的函数里的this都是window..你的代码中object.getNameFunc() 指向的是里面的一个匿名函数。因为用的someobject.somefunc()这种方式调用 所以this 指向的是object。然而在这个函数里又返回了一个函数。而且这个函数并没有用someobject.somefunc()这种方式调用。所以它里面的this指向window不理解可以再问
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript