JS继承

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
  }
})
posted @ 2021-03-21 11:04  xiaoxu1024  阅读(48)  评论(0)    收藏  举报