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