大廠面試經(jīng)典問題:什么是繼承 ?JavaScrpt中如何通過原型鏈實(shí)現(xiàn)繼承 ?

有同學(xué)提問,能不能講講繼承,這一篇筆記就來深入說說繼承相關(guān)的內(nèi)容,包含了什么是繼承,JavaScript如何實(shí)現(xiàn)繼承,通過原型鏈實(shí)現(xiàn)繼承。
什么是繼承 ?JavaScript中如何通過原型鏈實(shí)現(xiàn)繼承 ?

以下我們先使用UML類圖來表示類的屬性和方法,用以舉例說明

UML(統(tǒng)一建模語言)是一種為面向?qū)ο笙到y(tǒng)的產(chǎn)品進(jìn)行說明、可視化和編制文檔的一種標(biāo)準(zhǔn)語言,是非專利的第三代建模和規(guī)約語言。

UML是面向?qū)ο笤O(shè)計(jì)的建模工具,獨(dú)立于任何具體程序設(shè)計(jì)語言。

以下兩個(gè)無關(guān)的類:我們發(fā)現(xiàn),People類 和 Car類 沒有任何

image.png

People類和Student類的關(guān)系:我們發(fā)現(xiàn),Student是一種 People

image.png
  • People類擁有的屬性和方法Student類都有,Student類還擴(kuò)展了一些屬性和方法

  • Student “是一種” People,兩類之間是 “is a kind of ”關(guān)系

  • 這就是繼承關(guān)系:Student 類繼承自People類

1、什么是繼承

繼承描述了兩個(gè)類之間的 “ is a kind of ” 關(guān)系比如:學(xué)生“是一種”人,所以人類和學(xué)生類之間就構(gòu)成繼承關(guān)系People是 "父類"(或 "超類"、”基類“)Student是 ”子類“(或 ”派生類“)子類豐富了父類,讓類描述得更具體、更細(xì)化。

image.png

在UML圖示中使用白色的空心箭頭來表示類和類之間的繼承關(guān)系箭頭的方向是由子類指向父類這樣的表達(dá)方式就是繼承

更多的繼承關(guān)系舉例

| 父類 | 子類 |
| People | Student、Teacher |
| Vehicle | Car、Truck、Motorcycle |
| Appliance | Television、Refrigerator |
| Publication | Book、Magazine |

2、JavaScript中如何實(shí)現(xiàn)繼承?

  • 實(shí)現(xiàn)繼承的關(guān)鍵在于:子類必須擁有父類的全部屬性和方法,同時(shí)子類還應(yīng)該能定義自己特有的屬性和方法

  • 使用JavaScript特有的原型鏈特性來實(shí)現(xiàn)繼承,是普遍的做法

  • 在今后學(xué)習(xí)ES6時(shí),將介紹新的實(shí)現(xiàn)繼承的方法

3、 通過原型鏈實(shí)現(xiàn)繼承

image.png
image.png
image.png

當(dāng)然還有在ES6中如何實(shí)現(xiàn)繼承,后續(xù)有需求了再分享 !大家也可以踴躍提問哈 ,一起加油 _我們學(xué)的不僅是技術(shù),更是夢(mèng)想 !因?yàn)閻?,所以認(rèn)真 。如有相關(guān)前端方面的技術(shù)問題 ,歡迎主頁(yè)添加我,我會(huì)定期在群里給大家分享最新技術(shù)和解答問題 。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容