Jhon resig escribio una forma de realizar la sobrecarga de metodos de una forma sencilla, y facil, que nos permitira agregar funcionalidad a nuestras clases.
A cotinuacion les pongo un extracto de este concepto.
La forma que Jhon desarrollo para la sobrecarga de metodos es la siguiente.
// addMethod – By John Resig (MIT Licensed)
function addMethod(object, name, fn){
var old = object[ name ];
object[ name ] = function(){
if ( fn.length == arguments.length )
return fn.apply( this, arguments );
else if ( typeof old == ‘function’ )
return old.apply( this, arguments );
};
}
Su uso viene ha ser de la siguiente forma.
function Users(){
addMethod(this, «find», function(){
// Find all users…
});
addMethod(this, «find», function(name){
// Find a user by name
});
addMethod(this, «find», function(first, last){
// Find a user by first and last name
});
}
O se puede usar como un objeto “prototype” de la siguiente forma
Users(){}
addMethod(Users.prototype, «find», function(){
// Find all users…
});
addMethod(Users.prototype, «find», function(name){
// Find a user by name
});
addMethod(Users.prototype, «find», function(first, last){
// Find a user by first and last name
});
Y se los métodos sobrecargados se usarían de la siguiente forma
var users = new Users();
users.find(); // Finds all
users.find(«John»); // Finds users by name
users.find(«John», «Resig»); // Finds users by first and last name
users.find(«John», «E», «Resig»); // Does nothing
Mas informacion en el blog de Jhon Resig | JavaScript Method Overloading