1. 程式人生 > 其它 >什麼是原型、原型鏈,有什麼作用?

什麼是原型、原型鏈,有什麼作用?

什麼是原型:

原型:每一個物件都與另一個物件相關聯,那個關聯的物件就稱為原型。

例如:函式Person有一個屬性prototype,指向一個物件,對於普通函式來說沒多意義,對於建構函式就有作用了,當使用new操作符時,會把Person.prototype(原型物件)賦值給例項的__proto__(原型例項)屬性。

JS有一個原型查詢機制,把原來定義在例項上的方法,放到原型物件上去,通過建構函式的new操作,會把原型物件賦值給例項的__proto__屬性,那麼當使用返回的例項去呼叫某一個方法的時候,如果例項本身上沒有,就去自動去例項的__proto__上去查詢,這樣達到方法的複用,減少記憶體開銷。

原型鏈:


原型鏈:每一個物件,都有一個原型物件與之關聯,這個原型物件它也是一個普通物件,這個普通物件也有自己的原型物件,這樣層層遞進,就形成了一個鏈條,這個鏈條就是原型鏈。通過原型鏈可以實現JS的繼承,把父類的原型物件賦值給子類的原型,這樣子類例項就可以訪問父類原型上的方法了。

Person.prototype.constructor == Person

Person.prototype.__proto__.constructor  == Object 

Person.prototype.__proto__ == Object.prototype
         
Object.prototype.__proto__ == null