javascript - 关于寄生组合式继承的一个小疑问??
ringa_lee
ringa_lee 2017-04-10 18:08:42
[JavaScript讨论组]
书上有这么个例子来说明寄生组合式继承原理:
function SuperType(name){//新建一个超类型构造函数
    this.name=name;
    }
SuperType.prototype.sayName=function(){return this.name;}

function SubType(name,age){
    SuperType.call(this,name);//借用构造函数继承超类型的属性
    this.age=age;
    }
function F(){};
F.prototype=SuperType.prototype;
SubType.prototype=new F()//借用原型链继承超类型方法
SubType.constructor=SubType;
x1=new SubType("cc",11);
alert(x1.sayName())//cc

问题是:
SubType.prototype=new F()//不懂为什么要这么绕??
直接SubType.prototype=SuperType.prototype//这样不也可以继承超类型的方法吗??
或者只绕半圈SubType.prototype=(new SuperType()).__proto__//这样不可以继承超类型上原型的的方法吗??

ringa_lee
ringa_lee

ringa_lee

全部回复(3)
ringa_lee

第一个问题,直接SubType.prototype=SuperType.prototype这样不叫继承,这叫赋值;赋值的话,如果你在子类加方法,也会影响到父类。
第二个问题我实在无法吐槽…

阿神

https://segmentfault.com/q/1010000004342...

ringa_lee

改成你这样的话,子类原型添加方法,父类也有了。。。这样根本不是继承了吧

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

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