1. 程式人生 > >backbone之extend方法(剛明白了點)

backbone之extend方法(剛明白了點)

屬性 開發 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方法(剛明白了點)