javascript - js执行顺序
PHP中文网
PHP中文网 2017-04-11 11:00:37
[JavaScript讨论组]

这段代码js是如何解析的?

PHP中文网
PHP中文网

认证0级讲师

全部回复(3)
巴扎黑

当你执行object.getNameFunc()时,返回的是一个匿名函数:

function(){
    return this.name; 
}

当你调用该匿名函数时,这是的this指向的是window,因为js中所有匿名函数的this都执行window,所以最好返回的值是'The Window'。如果你想让当前匿名函数返回当前object中的name有两种方法:

1:为object方法中指定一个that变量,让that指向this。在对象方法中的this指向的都是当前对象。

getNameFunc: function() {
    var that = this;
    return function() {
        return that.name;
    }
}

2:使用call来调用该匿名函数,改变this的指向。

object.getNameFunc().call(object);
ringa_lee

这个就是经典的this问题,请Google下js this或在SF里面搜下js this即可,比如参考下面两篇文章:

  • http://www.ruanyifeng.com/blo...

  • http://web.jobbole.com/85198/

高洛峰
var name;
name = 'The Window'; 
var object = {};
object.name = 'My Object';
object.getNameFunc = function(){
    console.log(this.name); //My Object  'My Object';
    return function(){
        return this.name; //window.name 'The Window';
    }
}
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

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