首页 > 其他 > 详细

不使用class的六种继承实现方式总结

时间:2020-07-15 14:17:16      阅读:50      评论:0      收藏:0      [点我收藏+]
  原型链 假借构造函数 组合继承 原型式(Prototypal) 寄生式 组合寄生式
主要形式 subType.prototype = new SuperType() SuperType.call(this) subType.prototype = new SuperType() + SuperType.call(this) object(o)返回以o为原型的对象 object(o)然后添加新属性和方法,封装在一个函数中,直接返回新的对象
inheritPrototype(SubType, SuperType) + SuperType.call(this)
继承原型属性及方法 ?   ?

?
(原型已经是个具体的对象)

?
(原型已经是个具体的对象)
?
可通过构造函数传参改变继承来的属性值   ? ? 不涉及构造函数 不涉及构造函数 ?
实例间共享原型属性(实现函数复用) ?   ? ? ? ?
实例间不用共享引用类型的实例属性   ? ?     ?
形成原型链
(instanceof, isPrototypeOf判断为真)
?   ? ? ? ?
子类原型上没有多余的父类实例属性 ?
(继承的所有属性都在原型上)
?
(继承的所有属性都在实例上)
调用了两次SuperType构造函数,子类原型上和实例上个有一套父类实例属性 对象之间的继承,不分实例/原型 对象之间的继承,不分实例/原型 ?
其他 继承时将父类的实例属性变成了子类原型属性          

 

注意:

对于所有共享原型属性的继承方法,当改变原型中非引用类型的属性的值时,实际发生的是在实例上新增了一个同名的实例属性,因此改变一个实例的非引用类型属性的值,不会影响到其他实例。

 

不使用class的六种继承实现方式总结

原文:https://www.cnblogs.com/xintangchn/p/13304404.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!