原型鏈繼承
// 原型鏈繼承function father ()
father.prototype.getname = () =>
function son ()
son.prototype.getage = () =>
son.prototype = new father()
son.prototype.getsonname = () =>
var s = new son()
s.getname()
son.prototype.__proto__.getname = () =>
s.getname()
var f = new father()
f.getname()
缺點:extends繼承父類使用this宣告的屬性(私有屬性和公有屬性)被所有例項共享,在多個例項之間對引用型別資料操作會互相影響。
建立子類例項時,無法向父類建構函式傳參
1class fatch
6get () 10}
1112
class son extends fatch
17getinfo () 20}
2122 let s = new son('1','2','3')
23s.get()
24s.getinfo()
25console.log(fatch.prototype.__proto__)
26 console.log(son.prototype.__proto__)
注意:借用建構函式繼承(call)如果子類沒有定義constructor方法,這個方法會被預設新增,**如下。也就是說,不管有沒有顯式定義,任何乙個子類都有constructor方法。
子類必須在constructor方法中呼叫super方法,否則新建例項時會報錯。這是因為子類自己的this物件,必須先通過父類的建構函式完成塑造,得到與父類同樣的例項屬性和方法,然後再對其進行加工,加上子類自己的例項屬性和方法。如果不呼叫super方法,子類就得不到this物件。
1function
fatch (name,age)
56 fatch.prototype.getfname = function
() 10
function
son (name,age,job)
14 son.prototype.getfname = function
() 18
var s = new son(4,5,6)
19var f = new fatch(1,2,3)
20f.getfname()
21 s.getfname()
優點:可以向父類傳遞引數,而且解決了原型鏈繼承中:父類屬性使用this宣告的屬性會在所有例項共享的問題。
缺點:只能繼承父類通過this宣告的屬性/方法,不能繼承父類prototype上的屬性/方法。
每次子類例項化都要執行父類函式,重新宣告父類this裡所定義的方法,因此父類方法無法復用
可能問到的面試問題
寫在前面 最近總在找工作和被找工作糾纏著,由於各種因素的影響,想去的公司去不了,能去的公司不了解,我想,這到了我該做出抉擇的時刻了!生活中需要做選擇的地方太多了,要綜合各方面的因素,結合自身興趣,選擇乙個最合適的!grab every chance.1 請你自我介紹一下自己好嗎?2 你覺得你個性上最...
關於面試問到死鎖的問題
什麼是死鎖 就是在多執行緒的執行中,當乙個執行緒需要獲取到鎖時才能繼續往下執行,如果沒有立即獲取到鎖它是會進入等待狀態的。那麼假設如果執行緒1獲持有著a鎖之後它還想獲取b鎖,但是b鎖被執行緒2所持有,所以執行緒1要進入等待狀態。但是剛好執行緒2想獲取a鎖,被執行緒1所持有,那麼執行緒2也進入等待狀態...
面試反覆被問到的問題 高頻面試問題
方法1 寬度高度已知 父元素相對定位,子元素絕對定位,left 50 top 50 margin left 負的寬度一半 margin top 負的高度一板 方法二 flex布局,寬度高度已知 在父元素身上 display flex justify content center align item...