继承方式
1.构造函数继承
call 方法继承 ,缺点共享了方法,同时new 多个子元素,会浪费空间。
2.原型链继承
son.prototype = new Parent()
son.prototype.constructor = son
好处是共享同一个属性,方法,节省空间,但是引用类型会共享同一个,修改了一个后续的也会修改。
3.组合继承
构造函数和原型链继承组合起来。结合两者优点。
4.原型继承
function abc(o){
var b = {}
b.prototype = o
return b
}
var b = abc(son)
- 寄生组合继承
son.prototype = Object.create(parent.prototype)
son.prototype.constructor = son
避免了 son.prototype = new Parent()
中son.prototype 存在parent中多余的属性 ,因为new 了一次。