本文主要總結(jié)javascript 中的繼承實現(xiàn),主要包括原型繼承蚤假,構(gòu)造函數(shù)繼承和組合繼承栏饮。但在之前還需要鞏固一下原型相關(guān)的知識
1.構(gòu)造函數(shù),原型對象磷仰,和對象實例的關(guān)系
? ? 1)文字描述三者之間的關(guān)系:
? ? ? ? 1.每個構(gòu)造函數(shù)都有一個原型對象袍嬉;
? ? ? ? 2.原型對象都包含一個指針指向構(gòu)造函數(shù);
? ? ? ? 3.實例都包含一個指向原型對象的指針灶平;
? ? ? ? 4.構(gòu)造函數(shù)通過new關(guān)鍵字創(chuàng)建對象實例
? ? 2)代碼演示:
? ? 3)圖解關(guān)系
小結(jié):通過上述的文字伺通,代碼,和圖片應(yīng)該可以明白構(gòu)造函數(shù)逢享,原型對象和對象實例之間的關(guān)系罐监。
? ? ? ????? 那么,考慮一個問題:
? ? ? ? ? ? 如果將原型對象等于另一個對象的實例瞒爬,會怎樣弓柱??這個問題就引出了js中的原型鏈問題2嗟矢空!
2.原型鏈
? ? 1)原型鏈的形成過程:
? ? ? ? a:在第一小節(jié)末尾,我們提出了一個問題:? 如果將原型對象等于另一個對象的實例禀横,會怎樣妇多??
? ? ? ? b:答案就是:這樣的操作會形成原型鏈
? ? ? ? c:原因:讓當(dāng)前的原型對象等于另一個對象的實例燕侠,那么,當(dāng)前原型對象中就會包含一個指向另一個原型對象的指針立莉,相應(yīng)的绢彤,另一個原型中也包含著一個指向另一個構(gòu)造函數(shù)的指針。
????????如果在上述的賦值基礎(chǔ)上繼續(xù)進行進行相同的操作蜓耻,就會形成原型鏈茫舶。
? ? ? ? (有點繞,可能不好理解刹淌,下面有圖 幫助 理解)
? ? 2)圖解原型鏈
? ? ? ? a:基本的構(gòu)造函數(shù)饶氏,原型對象和對象實例之間的關(guān)系
?????b:將Person對象的實例賦值給Teacher.prototype
? ? 上圖中最后一行代碼對應(yīng)的圖解: