JavaScript繼承

知識(shí)點(diǎn):

  1. 通過原型鏈來實(shí)現(xiàn)子類和父類的關(guān)聯(lián),通過instanceof 來檢測(cè)兩者之間關(guān)系。

    obj instanceof constructor //可以檢測(cè)objd的constructor.prototype是否在obj的原型鏈上

  2. 構(gòu)造函數(shù)(prototype)和實(shí)例對(duì)象(__proto__)都指向構(gòu)造函數(shù)的原型對(duì)象

  3. 原型對(duì)象中constructor指向構(gòu)造函數(shù)。

核心:

若使子類的實(shí)例原型鏈上有父類的prototype,可以將子類的prototype設(shè)置為父類的實(shí)例(更好的是設(shè)為父類prototype的副本)

function Super(name){
  this.name=name;
}
Super.prototype.say=function(){
  alert('g');
}
function Sub(name,age){
  Super.call(this,name);
  this.age=age;
}
inherit(Sub,Super);
Sub.prototype.talk=function(){
  alert('g');
}

function inherit(sub,sup){
  var prototype=Object.create(sup.prototype);
  prototype.constructor=sub;
  sub.prototype=prototype 
}

最后編輯于
?著作權(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é)習(xí)或者開發(fā)過程常常被JS獨(dú)有的原型繼承撥過不少腦弦吧,為何不迎問題而...
    俗三瘋閱讀 386評(píng)論 0 2
  • 例子 我們生成兩個(gè)構(gòu)造函數(shù),后面的例子都是讓‘’貓‘’繼承‘’動(dòng)物‘’的所有屬性和方法。 動(dòng)物(為了更好的理解各種...
    流光號(hào)船長(zhǎng)閱讀 370評(píng)論 0 1
  • JavaScript有多種繼承模式,總結(jié)起來用到的方法有:原型鏈的傳遞、構(gòu)造函數(shù)的借用、對(duì)象的復(fù)制。 對(duì)于原型鏈和...
    minxuan閱讀 7,049評(píng)論 5 29
  • 本文譯自:How To Close Channels in Golang Elegantly。幾天前,我寫了一篇文...
    天唯閱讀 69,236評(píng)論 26 113
  • 財(cái)務(wù)知識(shí) 規(guī)則一:你必須明白資產(chǎn)和負(fù)債的區(qū)別,并且盡可能的購買資產(chǎn)。 大多數(shù)人就是因?yàn)椴磺宄Y產(chǎn)與負(fù)債之間的區(qū)...
    海盜樹閱讀 318評(píng)論 0 0

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