backbone之extend方法(剛明白了點)
阿新 • • 發佈:2017-05-10
屬性 開發 console mage ext img shu 構造 del
話說這個extend困擾我好幾天了,今天終於想明白了點。
在之前先要知道什麽是實例方法和靜態方法。
首先定義一個類(js不支持類,但是別人都這麽說,我也不知道為啥),如:var Person=function(){} //函數表達式或 function person(){}//函數聲明,
然後在類上加.方法名,如 Person.say=function(){ console.log(‘I am a Person,I can say.‘) };這就是一個靜態方法,調用時直接.方法名()就可以了。
在類原型上添加方法,如Person.prototype.cry=function(){ console.log(‘I shuai I proud‘)};這是個實例方法 ,調用時需要提前創建實例。即var haha=new Person; haha.cry();
話題回到extend,
除了Event類,其他類都含有extend方法,該方法在開發時是最常用的,就是為了生成子類的,我們的主角就是個類,他所創建的孩子就是子類。
extend方法接受兩個參數:
參數1:protoProps,為子類的原型prototype提供屬性 ,也就是創建實例方法
參數2:staticProps,為子類自身提供屬性 ,也就是創建靜態方法
例:
//模型的構造函數的擴展,相當於繼承,則聲稱的實列可以使用其父類的方法 var M = Backbone.Model.extend({ //第一個參數寫實列方法,第二個參數寫靜態方法 aaa : function(){ //實列方法 console.log(‘jt‘); } },{ bbb : function(){ //靜態方法 console.log(‘lkm‘); } }); var model = new M; model.aaa(); //實列方法,直接使用實列來進行調用 M.bbb(); //靜態方法是掛載在構造函數下面的,所以需要使用構造函數來直接調用
backbone之extend方法(剛明白了點)