什麼是原型、原型鏈,有什麼作用?
阿新 • • 發佈:2021-11-18
什麼是原型:
原型:每一個物件都與另一個物件相關聯,那個關聯的物件就稱為原型。
例如:函式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