之前有學習過通過prototype模式來構造類,並通過prototype來添加方法。好處大概有以下幾點:
1.類方法可以都放在prototype中,可以提高性能效率。
2.可以用prototype來實現繼承。
但是缺點也不少,比如:
1.通過prototype添加方法又臭又長,編碼很不方便。
2.繼承對象時,整個繼承方法比較復雜,不容易實現。
一番研究后,發現backbonejs中的繼承非常方便,因此想學習一下。
backbone中的繼承是基於_.extend對prototype方法進行合並。
// _就是underscore,如果項目沒有引進underscore,那么用$.extend替代也是一樣的。
比如有一個base類:
var base = function(){} // 添加prototype方法時,並不是直接添加 // 比如base.prototype.init = function(){} // 而是通過下面下方進行添加 $.extend(base.prototype,{ init:function(){}, setSetting:function(){} });
然后有一個sub類,繼承base類。
var sub = function(){} // 先用sub的自定義方法來合並base的prototype,再用base.prototype合並sub.prototype,最后返回的是最終的sub.prototype $.extend(sub.prototype,base.prototype,{
construcotr:sub, onclick:function(){} });