01 原形鏈模式

2022-06-06 11:21:09 字數 976 閱讀 8772

原形鏈查詢機制:

首先找當前例項的私有屬性,如果私有中存在,找的就是私有的,如果私有中不存在,預設根據__proto__找所屬類prototype上公有的屬性,公有中有的話就是公有的,如果公有也沒有,則繼續根據__proto__在往上一級找....直到找到object這個基類的prototype為止,如果基類上也沒有,則代表當前例項沒有這個屬性,返回的結果是undefined

特性1:

當前的例項不僅可以通過__proto__查詢,還可以修改原型上公有屬性和方法

我們還可以直接的通過當前類的prototype修改原型上的公有的屬性和方法

例項直接的在自己的私有屬性中增加c,其餘的例項是不受影響的

在所有ie瀏覽器中,瀏覽器為了保護類的原型,遮蔽了__proto__的使用

特性2:

每乙個物件(例項也是物件)都有乙個天生自帶的屬性:__proto__,這個屬性指向當前所屬類的原型

每乙個函式(類也是函式)都有乙個天生自帶的屬性:prototype(原型),並且這個屬性儲存的值是乙個物件資料型別的資料,瀏覽器預設給這個屬性開闢乙個堆內存在這個堆記憶體中儲存了相關的屬性和方法

手動重新賦值的prototype原型位址,就不指向原來瀏覽器預設開闢的堆記憶體空間,而是指向自己賦值的這塊記憶體空間,也是乙個物件。也有自己的__proto__,最終也會指向object的prototype。

原來預設開闢的那個因為沒人指向他了,處於無用狀態,就會被銷毀。

但是只有瀏覽器預設開闢的記憶體位址才有constructor屬性,新的記憶體空間需要自己指定constructor指向原來的那個函式。否則就會沿著往上查詢,constructor就指向了objec。

原形與原形連鏈

所有函式都有乙個特別的屬性 prototype 顯式原型屬性 所有例項物件都有乙個特別的屬性 proto 隱式原型屬性 顯式原型與隱式原型的關係 函式的prototype 定義函式時被自動賦值,值預設為 即用為原型物件 例項物件的 proto 在建立例項物件時被自動新增,並賦值為建構函式的proto...

原形與原形連鏈

所有函式都有乙個特別的屬性 prototype 顯式原型屬性 所有例項物件都有乙個特別的屬性 proto 隱式原型屬性 顯式原型與隱式原型的關係 函式的prototype 定義函式時被自動賦值,值預設為 即用為原型物件 例項物件的 proto 在建立例項物件時被自動新增,並賦值為建構函式的proto...

python設計模式 原形設計模式

一 什麼是原形設計模式 原型設計模式 prototype design pattern 幫助我們建立物件的轉殖,其最簡單的形式就是一 個clone 函式,接受乙個物件作為輸入引數,返回輸入物件的乙個副本。在python中,這可以 使用copy.deepcopy 函式來完成。二 應用案例 三 實現使用...