继承分为三种 原型链继承、组合式继承、寄生组合式继承。
为什么要有继承呢?举个例子: 如果说定义一个Person人类 而人类下有各种角色,角色有不同的属性,但又会用共同的属性,为了防止每创建一个角色就同时定义相同的属性,所以会使用到继承。
如何实现?
1.原型链继承
将角色的原型prototype绑上Person的实例,如图所示,这样就可以调用Person的原型对象了
2.组合式继承
但是原型链继承有个很讨厌的地方,就是还得手写基本的属性,如name、age,所以用到了组合式继承
如图所示,在属性中直接使用父Person(我写成了Name),加上call更改this指向,然后传参就完事
此时就不需要手写基本属性,只需要写不同的地方就好了
3.寄生组合式继承
组合式继承也是有不足的,如图所示
在这个例子中,我们需要指向Name的原型,所以在object.create(中放入Name.prototype)
此时非常干净对吧。
那么讲完了基本的继承,还想说说class类的继承,class的基本用法如下
而class的继承也非常简单,只需要class 子 extends 父 {}即可。**那么怎么去把重复的基本属性(name、age)去掉呢?**如图所示,懒得说了