js高階繼承

2021-09-27 04:45:15 字數 980 閱讀 8722

面試常見題:在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,建立子型別的物件 可以呼叫父型別的方法 關鍵 子型別的原型為父型別的乙個例項物件。實際上是子...