javascript - 闭包:this不是应该指向调用它的object?或者,第二个()执行的时候已经和object没关系了
怪我咯
怪我咯 2017-04-11 12:04:57
[JavaScript讨论组]

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(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没任何关系了

PHP中文网

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号