有没有更短的写法:
var controller = function(){
/*--- constructor ---*/
};
controller.prototype.function1 = function(){
//Prototype method1
}
controller.prototype.function2 = function(){
//Prototype method2
}
controller.prototype.function3 = function(){
//Prototype method3
}
return controller
我正在使用 require.js。我想知道是否可以避免controller.prototype代码重复。
具有辅助功能
尽管这比给出的答案更长,但如果您必须在多个地方执行此操作,则可能有助于定义辅助方法:
function protomix(constructor, mix){
for(var i in mix)
if(mix.hasOwnProperty(i))
constructor.prototype[i]=mix[i];
}
var controller = function(){
//constructor
};
protomix(controller, {
function1 : function(){
//Prototype method1
},
function2: function(){
//Prototype method2
},
function3 : function(){
//Prototype method3
}
});
return controller;
使用 jQuery 的扩展方法
我想我应该提一下jQuery的扩展方法 http://api.jquery.com/jquery.extend/因为它是在评论中提出的,并且通常比答案第一部分中定义的小帮助器方法具有更多功能:
var controller = function(){ /* ctor */};
return $.extend(controller.prototype,{
function1 : function(){
//Prototype method1
},
function2: function(){
//Prototype method2
},
function3 : function(){
//Prototype method3
}
});
其他图书馆
其他库也内置了类似的功能,例如下划线的扩展方法 http://underscorejs.org/#extend or Lo-Dash 的分配方法 http://lodash.com/docs#assign
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)