javascript - js嵌套的对象原型里面怎么制定this相同
天蓬老师
天蓬老师 2017-04-11 10:42:09
[JavaScript讨论组]
function person(){
        this.name="abc";
    }
    person.prototype={
        showName:function(){
            console.log(this.name);
        },
        info:{
            showName:function(){
                var _this=this;
                console.log(_this.name);
            }
        }
    }

代码里面两处_this指向不同,怎么让_this都指向person内部,还有在写插件时有什么办法只写一次_this,然后全局都可以调用,注意!!千万不要提供在person外面设置全局变量_this这种办法!!!

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(4)
天蓬老师
var person;
;(function(){
    var _this;//外面照样获取不到
    person = function(){
        _this = this
        this.name="abc";
    }
    person.prototype={
        showName:function(){
            console.log(this.name);
        },
        info:{
            showName:function(){
                var _this=this;
                console.log(_this.name);
            }
        }
    }
})()

PHP中文网

一般用 变量 that 在person 将this 接收一下

怪我咯

个人觉得没办法实现。你可以让他们这样调用啊:

var p = new person();

p.info.showName.call(p);

这就解决了 this 指向的问题了

怪我咯

个人觉得,如果方法重名,还不如在方法内部做一下判断。

function person(){
    this.name="abc";
}
person.prototype={
    showName:function(){
        if(isInfo) {
            console.log("isInfo" + this.name);
        }
         console.log(this.name);
    }

}

否则的话就像 @灰色v碰触 说的那样:

var p = new person();
p.info.showName.call(p);

在外面指定调用者。
当然就我个人而言,并不喜欢使用原型方式来书写。

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

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