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

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

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

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

2 回答

?
智慧大石

TA贡献1946条经验 获得超3个赞

上面的代码,如果你在SubType的原型上增加方法, 比如:

SubType.prototype.fn = function(){...}

这样不会影响到 SuperType.prototype

下面的代码就会。


查看完整回答
反对 回复 2019-04-09
?
倚天杖

TA贡献1828条经验 获得超3个赞

你说的是修改构造函数继承+原型对象继承的方法吧 二者如果单独使用的话都会有缺点,比如你单独使用原型对象继承那么缺点就是没办法传参 我们知道修改构造函数继承是通过改变this指向完成继承但 , 你再比如单独使用修改构造函数继承那么原型对象上的方法就没办法取到了 所以组合继承是取其精华,去其糟粕的方法


查看完整回答
反对 回复 2019-04-09
  • 2 回答
  • 0 关注
  • 429 浏览
慕课专栏
更多

添加回答

举报

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