JS是一個基於對象的腳本語言,和java等面嚮對象語言最大不一樣是:
JS中沒有類的概念(PS:ES6的類只是一種語法糖)java
原型就比如面向對象中的 類(模具),沒有類,就沒有對象數組
面嚮對象語言中,要先定義類才能建立對象
JS中,無須定義原型就能夠直接建立對象例子:
對象原型 -- Object.prototype
數組原型 -- Array.prototype
方法原型 -- Function.prototype函數
原型鏈就是原型與原型之間的關聯spa
做用:用於實現繼承,原型之間的繼承,對象之間的繼承
注意:JS內部繼承的實現就是靠原型鏈,沒有原型鏈就沒有繼承
一、每一個對象都有__proto__屬性(指向構造函數的原型),每一個函數都有__proto__屬性和prototype屬性
二、數組的原型(Array.prototype)是一個數組
三、方法的原型(Function.prototype)是一個方法,但這個方法很特別,它沒有prototype屬性
四、Object.prototype是全部對象的基類,Object.prototype.__proto__爲nullprototype