backbone之extend方法(刚明白了点)

话说这个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(); //静态方法是挂载在构造函数下面的,所以需要使用构造函数来直接调用


原文地址:https://www.cnblogs.com/cumting/p/6837871.html