這篇討論下類式繼承與原型繼承之間的效能差異與原型鏈結構區別
我們先開始討論原型鏈結構區別,在前面的兩個章節裡面,分別層現了類式繼承與原型繼承的實現方式。
接下來我利用前面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...