一、继承
1》原型链
用法:把实例的父类给子函数的原型
缺点:
1》因为修改了obj1.arr后obj2.arr也变了,因为来自原型对象的引用属性里所有实例共享的
2》创建子类实例时,无法向父类构造函数传递参数
2》借用构造函数
核心:借父类的构造函数来增强子类实例,就是说,相当于复制了一份父类的属性或者方法给子类了
优点:
a)解决了子类实例共享父类引用属性的问题
b)创建子类实例时,可以向父类构造函数传递参数
缺点:
a)无法实现复用,每一个子类实例都有一个新的run函数,如果实例的对象多了,内存消耗过大
3》继承方式:(最常用的继承方式)
a)组合继承
优点:
1》不存在引用属性共享的问题
2》可传递参数
3》方法可复用
缺点:(小瑕疵)
子类原型上有一份多余的父类实例的属性
b)原型式继承
核心:用一个函数,生出来一个新的对象
优点:从已有对象繁衍出新的对象,不需要创建自定义类型
缺点:
1》原型的引用属性会互相影响(公用一个地址)
2》无法实现代码复用,属性是后添加的,都没用到函数封装
c)寄生式继承
核心:创建新对象===》增强对象(添加属性或者方法)===》返回对象
d)寄生组合式继承
优点:修正组合继承的缺点,只使用一次构造函数
缺点:写法繁琐