1,為什么需要原型?
用構造函數生成實例對象,有一個缺點,無法共享屬性和方法。
每一個實例對象,都有自己的屬性和方法的副本。這不僅無法做到數據共享,也是極大的資源浪費
考慮到這一點,設計js作者決定為構造函數設置一個prototype屬性。
這個屬性包含一個對象(以下簡稱"prototype對象"),所有實例對象需要共享的屬性和方法,都放在這個對象里面;那些不需要共享的屬性和方法,就放在構造函數里面。
實例對象一旦創建,將自動引用prototype對象的屬性和方法。也就是說,實例對象的屬性和方法,分成兩種,一種是本地的,另一種是引用的。
2,原型(prototype)
概念:每一個構造函數都有一個prototype屬性,指向另一個對象。這個對象的所有屬性和方法,都會被構造函數的實例繼承。
3,原型的繼承方式(兩類5種)
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
