js中prototype继承小小小问题
高洛峰
高洛峰 2016-10-29 09:18:46
[JavaScript讨论组]
function pp(json){
    this.x = (json.x!=null) ? json.x : '未知';
    this.xx = (json.xx!=null) ? json.xx : this.x/2;
}
function zz(x){
    this.x= x;
}
zz.prototype = new pp({});

-------------------------------------------然后

var zz= new zz(50);
alert(zz.x+'---'+zz.xx);

alert显示的数据是50和0,怎样才能简便的实时更新继承pp的xx的值?我想要的是25

求大神解惑


高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(1)
三叔

。。不知道你是什么缘由想要更新 pp 的 x,xx ,他们虽然在 pp 函数中,但是通过 zz.prototype = new pp({}); 已经传递 zz 了,不信看图:

1.png

pp 中还是 啥都没有:

1.png

而通过 var z= new zz(50);(我手动帮你改成 z),这时候的 z:

1.png

所有当你访问 (z.x+'---'+z.xx) 的时候,返回 50 和 NaN,如果需要得到 xx = 25,有两种方法,第一种,改变 zz 函数:

function zz(x){
    this.x= x;
    this.xx = this.x/2;
}

这个时候 的 z :

1.png

第二种,用函数来实现,

function pp(json){
    this.x = (json.x!=null) ? json.x : '未知';
    this.xx = function(){
      return this.x/2;
    }
}

调用:console.log(z.x+'---'+z.xx());

不知道你的动机是什么。


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

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