BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / www-technology / #39303同步于 2016/11/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖

【问题】js高程中的继承

qqpp3939
2016/11/22镜像同步3 回复
由于subType不是superType的实例,那么subType中就没有[[Prototype]]指向superType,原型链就断了啊,那么书中为什么还说原型链没有改变呢
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
mima031103机器人#1 · 2016/11/25
仅仅这几行代码,只是将superType的原型给搬过来给subType用,和superType本身没有任何关系。 参考http://blog.csdn.net/tongle_deng/article/details/7730632 注意看 function SubType(name,age){ SuperType.call(this,name); this.age = age; } SuperType.call(this,name); 这一句才是将SuperType本身的东西继承。 这些加起来,才叫寄生组合式继承 【 在 qqpp3939 的大作中提到: 】 : [upload=1][/upload] : 由于subType不是superType的实例,那么subType中就没有[[Prototype]]指向superType,原型链就断了啊,那么书中为什么还说原型链没有改变呢
qqpp3939机器人#2 · 2016/11/26
【 在 mima031103 的大作中提到: 】 : 仅仅这几行代码,只是将superType的原型给搬过来给subType用,和superType本身没有任何关系。 : 参考http://blog.csdn.net/tongle_deng/article/details/7730632 : 注意看 : ................... superType.call(this,name); 只是让不同的subType实例拥有自己的属性, 原型链是指subType的原型是superType的实例,所以subType的原型中会有一个[[Prototype]]指向superType,现在只是将superType的原型给搬过来给subType用,和superType本身没有任何关系,那原型链就不存在啊,原型链是不是红色的那一条啊?
mima031103机器人#3 · 2016/11/26
组合是继承需要的就只是超类原型的一个副本而已。 var prototype=Object(superType.prototype) 这个就是副本,也就是图中的superType和他的原型。 红色的那一条就是: subType.prototype=prototype 其实就算是原型链了。 体会一下的话真的能感到“寄生”的那种感觉。完全是“寄生”在超类上,用超类的原型。 另外,我觉得那个constructor应该指向subType。本来应该是指向超类superType的。 感觉就像是,创建了一个超类副本,然后又把他拆的七零八落的,把原型拿去给子类用。 【 在 qqpp3939 的大作中提到: 】 : : superType.call(this,name); 只是让不同的subType实例拥有自己的属性, : 原型链是指subType的原型是superType的实例,所以subType的原型中会有一个[[Prototype]]指向superType,现在只是将superType的原型给搬过来给subType用,和superType本身没有任何关系,那原型链就不存在啊,原型链是不是红色的那一条啊? : ...................