javascript中this指向问题?
阿神
阿神 2017-04-10 16:44:03
[JavaScript讨论组]

下面这段代码中:

var obj = {

name:"Hello",
fn: function () {
    return{
        name:this.name,
        show: function () {
            console.log(this.name);
        }
    }
}

};
第二个this很好理解,指向fn返回的对象,但是第一个this应该如何理解呢?

阿神
阿神

闭关修行中......

全部回复(7)
高洛峰

把lz的方法加了点输出,代码如下,注释是结果

var obj = {
name:"Hello",
    fn: function () {
        return{
          name:this.name,
          show: function () {
              console.log(this.name);
          }
        }
    }
};
console.log(obj.name); //Hello

obj.name="objName";
console.log(obj.name); //objName

var test = obj.fn();
test.name = "fnName";
test.show(); //fnName
console.log(obj.name); //objName

希望以下内容有帮助

原文:图文解说 JavaScript this 到底指向什么?
http://www.codeceo.com/article/javascript-this-point.html

高洛峰

第二个写成这样或许好理解一些。

var obj = {
    name:"Hello",
    fn: function () {
        var o = {};
        o.name = this.name;
        o.show = function() {
            console.log(this.name);
        };
        return o;
    }
};
PHPz

return后面是个对象字面量或者也可以叫对象初始化器,它里面的this就是return所在的函数的this。具体是什么要看这个函数怎么被调用。

天蓬老师

抓住一点: this的值是obj.fn这个函数求值时才绑定的
如果求值时的表达式是obj.fn(), this的值就会是obj
如果obj.fn.apply(其他), this就会是"其他"

大家讲道理

this是动态作用域,视调用位置而定

PHP中文网

建议看一篇综合知识帖 http://www.ruanyifeng.com/blog/2010/04/using_this_keyword_in_javascript.html?plg_nld=1&plg_uin=1&plg_auth=1&plg_nld=1&plg_usr=1&plg_vkey=1&plg_dev=1#rd

阿神
var obj = {
    name:"Hello",
    fn: function () {
        return {
            name:this.name,
            show: function () {
                console.log(this.name);
            }
        }
    }
};

==》

var obj = {
    name:"Hello",
    fn: function () {
        var that=this;
        return {
            name:that.name,
            show: function () {
                console.log(this.name);
            }
        }
    }
};
obj.fn().show();//Hello

代码写成这样就好理解了不~

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

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