Usted está tratando de hacer algún tipo de lo que se llama en algunos idiomas método de sobrecarga.
JavaScript no lo admite de esa manera.
JavaScript es muy versátil y le permite lograr este tipo de características de diferentes maneras.
Para su ejemplo particular, su función add
, le recomendaría realizar una función que acepte un número arbitrario de parámetros, utilizando el objeto arguments
.
jQuery.extend(jQuery, {
add: function (/*arg1, arg2, ..., argN*/) {
var result = 0;
$.each(arguments, function() {
result += this;
});
return result;
}
});
entonces puede pasar cualquier número de argumentos:
alert(jQuery.add(1,2,3,4)); // shows 10
Para el método más complejo sobrecarga puede detectar el número de argumentos pasados y sus tipos, por ejemplo:
function test() {
if (arguments.length == 2) { // if two arguments passed
if (typeof arguments[0] == 'string' && typeof arguments[1] == 'number') {
// the first argument is a string and the second a number
}
}
//...
}
Consulte el siguiente artículo, que contiene una técnica muy interesante que aprovecha algunas características del lenguaje JavaScript como cierres, aplicaciones de función, etc., para imitar sobrecarga de métodos:
Creo que sobrescribirá la primera propiedad 'agregar' con la 2da. – alex
. Supongo que quiere decir "sobrecarga". Pero como señala alex, la segunda función * * invalidará ** la primera ... – Shog9