Is there a shorter way to write this:
var controller = function(){
/*--- constructor ---*/
};
controller.prototype.function1 = function(){
//Prototy
Even though this is longer than the answer given if you have to do this multiple places might be helpful to define a helper method:
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;
I thought I should mention jQuery's extend method because it was brought up in a comment and because in general has more functionality than the small helper method defined in the first part of the answer:
var controller = function(){ /* ctor */};
return $.extend(controller.prototype,{
function1 : function(){
//Prototype method1
},
function2: function(){
//Prototype method2
},
function3 : function(){
//Prototype method3
}
});
Other libraries also have similar functionality built in, such as underscore's extend method or Lo-Dash's assign method