JS繼承

構(gòu)造函數(shù)繼承

只會(huì)繼承構(gòu)造函數(shù)本身的屬性方法,不會(huì)繼承原型中的。

var Parent=function(){
  this.name='名字',
  this.func=function(){
    alert('方法')
  }
}
Parent.prototype={
  getName:function(){
    alert(this.name)
  }
}
var Child=function(){
  Parent.call(this)//call和apply都可以
}
// 相當(dāng)于吧父類當(dāng)成一個(gè)函數(shù)在子類中運(yùn)行,并且改變this為子類實(shí)例,這樣就相當(dāng)于拷貝了 父類中構(gòu)造函數(shù)中的屬性和方法,實(shí)現(xiàn)構(gòu)造函數(shù)繼承,但是無(wú)法繼承原型中的方法和屬性
var child=new Child()
console.log(child)

原型鏈繼承

原型和實(shí)例都可以繼承,就是子類和父類共享一個(gè)原型

var Parent=function(){
  this.name='名字',
  this.age=25,
  this.func=function(){
    alert('方法')
  }
}
Parent.prototype={
  getName:function(){
    alert(this.name)
  }
}
var Child=function(){
  this.childName='子名字'
}
Child.prototype=new Parent()
var child=new Child()
console.log(child)
// 利用js原型鏈的特點(diǎn)將子類的原型等于父類的實(shí)例,那么子類在原型鏈訪問(wèn)過(guò)程中就可以訪 問(wèn)到父類的屬性和方法,問(wèn)題,多個(gè)實(shí)例共享一個(gè)原型

組合繼承 借用構(gòu)造函數(shù) + 原型式繼承

var Parent=function(){
  this.name='名字',
  this.age=25,
  this.func=function(){
    alert('方法')
  }
}
Parent.prototype={
  getName:function(){
    alert(this.name)
  }
}
var Child=function(){
  Parent.call(this)
}
Child.prototype=Parent.prototype
var child=new Child()
console.log(child)

class繼承

class Parent {
  constructor(name){
    this.name="父類名字"
  }
  parentFunc(){
    alert(`${this.name}-parentFunc`)
  }
}
//使?extends即可實(shí)現(xiàn)繼承,更加符合經(jīng)典?向?qū)ο笳Z(yǔ)?的寫法
class Child extends Parent {
  constructor(name){
    super(name)//?類的constructor?定要執(zhí)?super(),以調(diào)??類的constructor
    this.name=name
    this.age=24
  }
  childFunc(){
    alert(`${this.name}-childFunc`)
  }
}
const child=new Child("名字")
console.log(child)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、原型鏈 學(xué)過(guò)java的同學(xué)應(yīng)該都知道,繼承是java的重要特點(diǎn)之一,許多面向?qū)ο蟮恼Z(yǔ)言都支持兩種繼承方式:接口...
    grain先森閱讀 1,470評(píng)論 0 39
  • 原文鏈接 js的繼承有6種方式,大致總結(jié)一下它們各自的優(yōu)缺點(diǎn),以及它們之間的關(guān)系。 1.原型鏈 js的繼承機(jī)制不同...
    空_城__閱讀 833評(píng)論 0 11
  • 繼承的概念:子類可以使用父類共享的屬性和方法,避免重復(fù)代碼提高代碼復(fù)用性。 原型鏈:子類可以共享父類的實(shí)例對(duì)象和實(shí)...
    淺秋_6672閱讀 456評(píng)論 0 0
  • JS 實(shí)現(xiàn)繼承的方法有:1.原型鏈繼承2.構(gòu)造函數(shù)繼承3.組合繼承(原型鏈繼承 + 構(gòu)造函數(shù)繼承)4.原型式繼承(...
    yun_154192閱讀 815評(píng)論 0 0
  • 繼承6種套餐 參照紅皮書,JS繼承一共6種 1.原型鏈繼承 核心思想:子類的原型指向父類的一個(gè)實(shí)例 Son.pro...
    燈不梨喵閱讀 3,251評(píng)論 1 2

友情鏈接更多精彩內(nèi)容