为了账号安全,请及时绑定邮箱和手机立即绑定

JS中寄生组合式继承中为什么要使用原型式继承的方法继承父类的原型呢?

JS中寄生组合式继承中为什么要使用原型式继承的方法继承父类的原型呢?

翻阅古今 2019-05-14 09:42:22
本人刚开始学习js,在《js高程》上看到了寄生组合式继承这一节,但是对书上给出的代码不太明白。我理解的是:寄生组合式继承是为了避免组合继承中实例属性和原型对象中属性重复的问题,它使用借用构造函数的方法继承父类构造函数中的属性,使用原型式继承的方法继承父类的原型对象。这是书上的代码:functioninheritPrototype(SubType,SuperType){varpro=Object.create(SuperType.prototype);pro.constructor=SubType;SubType.prototype=pro;}但是,它和下面的函数有什么区别呢?functioninheritPrototype(SubType,SuperType){SubType.prototype=SuperType.prototype;SubType.prototype.constructor=SubType;}不太明白为什么要使用原型式继承的方法继承父类的原型,原型式继承不就是一个浅复制吗?这和直接赋值有什么区别呢?
查看完整描述

2 回答

?
回首忆惘然

TA贡献1847条经验 获得超11个赞

上面的代码,如果你在SubType的原型上增加方法,比如:
SubType.prototype.fn=function(){...}
这样不会影响到SuperType.prototype。
下面的代码就会。
                            
查看完整回答
反对 回复 2019-05-14
?
达令说

TA贡献1821条经验 获得超6个赞

你说的是修改构造函数继承+原型对象继承的方法吧二者如果单独使用的话都会有缺点,比如你单独使用原型对象继承那么缺点就是没办法传参我们知道修改构造函数继承是通过改变this指向完成继承但,你再比如单独使用修改构造函数继承那么原型对象上的方法就没办法取到了所以组合继承是取其精华,去其糟粕的方法
                            
查看完整回答
反对 回复 2019-05-14
  • 2 回答
  • 0 关注
  • 743 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信