「原型鏈」祖師爺什麼是原型鏈呀?


「原型鏈」祖師爺什麼是原型鏈呀?

祖師爺告訴你什麼是原型鏈


​每個門派都有一個祖師爺。學徒在山上學藝,學成下山後謹記師門教導,施展一身武藝。恰逢一日對敵,面對敵人的怪異武功,師門好像未曾教過破解之法,便高喊一聲祖師爺救我,剎那間一道白光降於頭頂,祖師爺靈魂附體,一套精絕凌厲的拳法殺得敵人措手不及。但敵人也極是難纏,恐怕非要那門傳說中從天而降的掌法才能制敵。你心中暗自著急,催促著祖師爺趕快發招,這時只聽身內傳來了祖師的聲音:“MD這破掌法當年偷懶沒學,我去把我師祖也叫來問問...”

每個門派(FunctionX)都有一個祖師爺(prototype)。學徒(object)在山上學藝(= new FunctionX),學成下山後謹記師門教導,施展一身武藝(

object.xxx)。恰逢一日對敵,面對敵人的怪異武功,師門好像未曾教過破解之法(object對象沒有yyy方法),便高喊一聲祖師爺救我,剎那間一道白光降於頭頂,祖師爺(__proto__)靈魂附體,一套精絕凌厲的拳法殺得敵人措手不及(繼續尋找原型中是否有yyy方法)。但敵人也極是難纏,恐怕非要那門傳說中從天而降的掌法才能制敵。你心中暗自著急,催促著祖師爺趕快發招,這時只聽身內傳來了祖師的聲音:“MD這破掌法當年偷懶沒學,我去把我師祖也叫來問問...”(如果原型中沒有yyy方法,則繼續查找原型的原型,是謂原型鏈)


面向對象的三大特徵

  • 繼承
  • 多態
  • 封裝

完美實現原型繼承的方案

藉助寄生組合繼承

<code>function Person(obj) {    this.name = obj.name    this.age = obj.age}Person.prototype.add = function(value){    console.log(value)}var p1 = new Person({name:"番茄", age: 18})function Person1(obj) {    Person.call(this, obj)    this.sex = obj.sex}Person1.prototype = Object.create(Person.prototype)Person1.prototype.play = function(value){    console.log(value)}var p2 = new Person1({name:"雞蛋", age: 118, sex: "男"})/<code>

通過此方式實現原型的繼承,子類原型擴展不會影響父類原型,子類的原型上也不會出現了父類的屬性

❤️ 看完幫個忙

如果你覺得這篇內容對你挺有啟發,我想邀請你幫我個小忙:

點贊/關注/收藏,讓更多的人也能看到這篇內容(收藏不點贊,都是耍流氓 -_-)


分享到:


相關文章: