類式繼承與原型繼承之間的效能差異與原型鏈結構區別

2022-05-03 07:06:08 字數 945 閱讀 9166

這篇討論下類式繼承與原型繼承之間的效能差異與原型鏈結構區別

我們先開始討論原型鏈結構區別,在前面的兩個章節裡面,分別層現了類式繼承與原型繼承的實現方式。

接下來我利用前面2個章節的**來宣告2個物件。

原型繼承:

var 

p1 = 

clone

(person

);var 

p2 = 

clone

(person

);類式繼承: 

var a1 = new author(21, "asd");

var a2 = new author(22, "dsa");

接下來我們用chrome來看下 a1與p1的結構圖

如a1(類式繼承)中,它擁有2個的__proto__ 而p1就乙個。在鏈式的查詢中無疑p1的搜尋來的更快速。

在類式繼承中我們看到這句話

1 subclass.prototype = new f();
在原型繼承中

1 f.prototype = object;
他們都使用了prototype來繼承,但是類式繼承中,每一次的繼承都是乙個新生成的例項物件,而例項繼承中每次都直接使用乙個物件字面量。

類式繼承subclass.prototype=[new subclass()].__proto__=[new f()].__proto__=f.prototype

原型繼承f.prototype=[new f()].__proto__=object

所以不管是在空間上還是在屬性搜尋上,原型繼承都優於類式繼承。但是使用哪一種方式取決於具體業務。比較特別的一點是程式設計師大多鍾情於類式繼承。

JS 繼承 類式 與 原型式

1.類式繼承 先宣告乙個超類 function person name 給這個超類的原型物件上新增方法 getname person.prototype.getname function 例項化這個超 var a new person darren1 console.log a.getname da...

類的原型與類的繼承

建立的每乙個函式都有乙個prototype 原型 屬性,這個屬性是乙個物件。而類的建構函式也是函式,只不過它是通過 new 操作符呼叫的,才作為建構函式,所有它也具有原型屬性。預設情況下,所有protoptype屬性都會自動獲得乙個constructor 建構函式 屬性,這個屬性包含乙個指標,指向p...

原型及原型鏈繼承之間的關係

什麼是原型?1.原型產生的原因 例項化其實是乙個很耗費記憶體空間的,通過建構函式去例項物件的時候,每乙個物件中的屬性和方法都是在自己的空間,那麼當有多個物件的時候,這些屬性和方法就有多少個在各自的空間中存在在,所以很浪費空間,因此,為了解決這個問題,實現資料共享,原型就產生了。2.建構函式中有個pr...