JS继承有很多方式,常见的有原型继承、构造继承、组合继承和寄生组合继承等
1.原型继承。
原型继承通过父元素实例赋值给子元素的原型对象。
缺点:所有的子类实例共享一个原型,一个改变,其他也会改变,一般不单独使用。
//原型继承 function Parent(){ //... } function Son(){ //... } Son.prototype = new Parent()
2.构造继承
构造继承通过使用call函数,将父类的this指向改变到子类的this,通过这种方式,继承父类的属性。
缺点:方法在子类的构造函数内,每个子类实例不能共享,需要每次创建,浪费资源
//构造继承 function Parent(){ //... } function Son(){ Parent.call(this) //... }
3.组合继承
组合继承借鉴了原型继承和构造继承的优势,通过原型来继承方法,通过构造来继承属性。最常用的继承方式
缺点:父类被引用了两次,浪费资源
//组合继承 function Parent(){ //... } function Son(){ Parent.call(this) //... } Son.prototype = new Parent()
4.寄生组合继承
寄生组合继承和组合继承类似,只是通过使用Object.create()方法来创建空的父类实例,解决了父类被引用两次的缺点
//寄生组合继承 function Parent(){ //... } function Son(){ Parent.call(this) //... } Son.prototype = Object.create(Parent, { constructor:{ value: Son } })
© 著作权归作者所有
举报
发表评论
0/200