1,爲何須要原型?javascript
用構造函數生成實例對象,有一個缺點,沒法共享屬性和方法。html
每個實例對象,都有本身的屬性和方法的副本。這不只沒法作到數據共享,也是極大的資源浪費java
考慮到這一點,設計js做者決定爲構造函數設置一個prototype屬性。app
這個屬性包含一個對象(如下簡稱"prototype對象"),全部實例對象須要共享的屬性和方法,都放在這個對象裏面;那些不須要共享的屬性和方法,就放在構造函數裏面。函數
實例對象一旦建立,將自動引用prototype對象的屬性和方法。也就是說,實例對象的屬性和方法,分紅兩種,一種是本地的,另外一種是引用的。prototype
2,原型(prototype)設計
概念:每個構造函數都有一個prototype
屬性,指向另外一個對象。這個對象的全部屬性和方法,都會被構造函數的實例繼承。code
3,原型的繼承方式(兩類5種)htm
1,構造函數綁定 (使用call或apply方法,將父對象的構造函數綁定在子對象上,即在子對象構造函數中加一行)對象
2, prototype模式
3, 直接繼承prototype
4,利用空對象做爲中介
5,拷貝繼承
4,原型鏈
概念:在javascript中,每一個對象都有一個指向它的原型(prototype)對象的內部連接。每一個原型對象又有本身的原型,直到某個對象的原型爲null爲止,組成這條鏈的最後一環
只是總結性的描述一下,想看詳細內容請點擊參考連接祥看
參考連接:簡書--https://www.jianshu.com/p/826b485c5696,
阮一峯--http://www.ruanyifeng.com/blog/2010/05/object-oriented_javascript_inheritance_continued.html