继承

继承( 继承可以提高代码的复用性)

1 原型链继承

利用原型让一个引用类型继承另一个引用类型的属性和方法
缺点 通过原型实现继承 原型会变成另一个类型的实例 原来的实例属性变成了现在的原型属性
该原型的引用类型属性会被所有实例共享
在创建子类型实例时没有办法在不影响所有对象实例的情况下给超类型构造函数传递参数

2构造函数实现继承

在子类型的构造函数中调用超类型的构造函数
优点
可以向超类传递参数
解决了原型中包含引用类型值被所有实例共享的问题
缺点
方法都是在构造函数中定义的 所以函数复用就无从谈起了
超类型原型中的方法对于子类型而言都是不可见的

3组合继承(原型链+构造函数)

使用原型链继承原型的属性和方法 构造函数实行实例属性的继承
优点
实现了函数复用 每个实例都有自己的属性 可以向超类传递参数
缺点
无论什么情况下 都会调用两次超类构造函数 一次在创建子类原型的时候 一次在子类构造函数内部

4原型式继承(浅拷贝)

借助原型基于已有的对象创建新对象,同时还不必因此创建自定义类型
es5通过新增object.create方法规范了原型式继承,这个方法接收两个参数 一个用作新对象原型的对象
和一个为新对象定义额外属性的对象在传入一个参数的情况下 和object方法行为相同
缺点
和原型链实现继承一样 引用类型值的属性会被所有实例共享

5寄生式继承

就是又创建了一个函数,然后在函数内部定义一个对象来实现原型式继承方式,然后再给这个对象添加方法或属性值,
最后再将这个对象返回,这就成为了寄生式继承方式
缺点
做不到函数复用
包含引用类型值的属性会被所有实例共享

6寄生组合式继承

借用构造函数继承属性 通过原型链的混成形式继承方法
优点
只调用了一次超类型构造函数 效率更高 避免在 SuberType.prototype
上面创建了不必要 多余的属性
与此同时 原型链还能保持不变 因此寄生组合是继承是引用类型最理想的继承方式
es6主要利用class配合extends与super实现继承;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值