每個門派都有一個祖師爺。學徒在山上學藝,學成下山後謹記師門教導,施展一身武藝。恰逢一日對敵,面對敵人的怪異武功,師門好像未曾教過破解之法,便高喊一聲祖師爺救我,剎那間一道白光降於頭頂,祖師爺靈魂附體,一套精絕凌厲的拳法殺得敵人措手不及。但敵人也極是難纏,恐怕非要那門傳說中從天而降的掌法才能制敵。你心中暗自著急,催促著祖師爺趕快發招,這時只聽身內傳來了祖師的聲音:“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>
通過此方式實現原型的繼承,子類原型擴展不會影響父類原型,子類的原型上也不會出現了父類的屬性
❤️ 看完幫個忙
如果你覺得這篇內容對你挺有啟發,我想邀請你幫我個小忙:
點贊/關注/收藏,讓更多的人也能看到這篇內容(收藏不點贊,都是耍流氓 -_-)
閱讀更多 番茄學前端 的文章