面試常見題:在es6之前如果要繼承該如何實現?
原型繼承:
—proto—:原型的位址
如何實現原型繼承:
1.更改子類的原型指向父類的乙個例項物件。
語法:子類.protype=new 父類();
例如:student.protype=new person();
2.再給子類的原型設定乙個contructor指向子類(保證他們的關係是完整的)
語法:子類.prototype.constructor = 子類
例如:student.prototype.constructor = student;
原型繼承的問題:
缺點:原型繼承無法完美繼承屬性
優點:原型可以完美繼承方法
解決方案:使用借用繼承
只需掌握實現方式和優缺點,在es6之前如何實現繼承?
第一可以利用原型實現繼承,讓子類原型指向父類的乙個例項,
第二原型會有一定的缺點,他無法完美的繼承屬性,但是可以繼承方法,
對於這個缺點的解決方法就是使用借用繼承
借用繼承:
普通函式中this指向window
定時器中this指向window
1.call方法:
語法: 函式名.call(呼叫者,函式實參,函式的實參…)
借用誰就讓誰.call
呼叫者: 希望this指向誰就傳誰,想指向obj就寫obj;
優點:完美繼承屬性
缺點:無法繼承方法
組合繼承:
組合繼承指的是:將原型鏈和借用建構函式的技術組合到一塊,從而發揮兩者之長的一種繼承模式。
實現思路: 使用原型鏈實現對原型方法和方法的繼承,而通過借用建構函式來實現對例項屬性的繼承。
這樣,既通過在原型上定義方法實現了函式復用,又能夠保證每個例項物件都有它自己的屬性。
JS高階 繼承
物件導向程式設計思想 根據需求,分析物件,找到物件有什麼特徵和行為,通過 的方式來實現需求,要想實現這個需求,就要建立物件 要想建立物件,就應該顯示有建構函式,然後通過建構函式來建立物件,通過物件呼叫屬性和方法來實現相應的功能及需求,即可 首先,js不是一門物件導向的語言,js是一門基於物件的語言,...
js繼承 來自js高階
繼承 組合繼承 原型繼承與借用建構函式 用建構函式實現對例項屬性的繼承,用原型鏈實現對原型屬性和方法的繼承 function super name super.prototype.sayname function function sub name,age sub.prototype new sup...
js高階 原型鏈繼承
實現繼承方式1 套路 1,定義父型別建構函式。2,給父型別的原型新增方法。3,定義子型別的建構函式。4,建立父型別的物件賦值給子型別的原型。5,將子類原型的構造屬性設定為子型別。6,給子型別原型新增方法 7,建立子型別的物件 可以呼叫父型別的方法 關鍵 子型別的原型為父型別的乙個例項物件。實際上是子...