js本身是基于面向對象程式設計的
js内置了很多類,比如Promise,我們可以通過new Promise() 來建立一個執行個體處理異步程式設計
js的一些架構也是基于面向對象的,比如react、vue、jquery,都是通過建立執行個體進行操作的
js封裝的一些插件也是基于面向對象的,通過建立執行個體來管理他們的私有屬性和公共方法,比如swiperjs、拖拽等
js的面向對象是基于原型和原型鍊的
js的重載、重寫和繼承也和其它語言不一樣
3.1. js的繼承是通過把Parent的執行個體指派給Child的prototype,子類執行個體查找屬性和方法,是基于__protop__原型鍊查找機制完成的。(其它語言的繼承是通過拷貝實作的)
3.2. js的重寫會改寫其父類的方法,影響其它子類,比如 Child.prototype.__proto__.func1() = ....這種形式重寫父類的方法
3.3 父類的私有屬性和公有屬性通過繼承都變成了子類的共有屬性和方法了
4.1. 在Child中把Parent當作普通函數執行,通過call把this指向Child執行個體,讓Child實作對Parent的私有屬性和方法的繼承
4.2. 隻能繼承Parent的私有方法和屬性(因為是把子類當普通方法執行的,和原型鍊沒有關系)
5.1. call + 類似原型鍊繼承
5.2 子類能分别繼承父類的私有和共有屬性和方法