Vous essayez de faire un certain type de ce qu'on appelle dans certaines langues la surcharge de la méthode.
JavaScript ne le supporte pas de cette manière. JavaScript est très polyvalent et vous permet d'obtenir ce type de fonctionnalité de différentes manières.
Pour votre exemple particulier, votre fonction add
, je vous recommande d'effectuer une fonction qui accepte un nombre arbitraire de paramètres, en utilisant l'objet arguments
.
jQuery.extend(jQuery, {
add: function (/*arg1, arg2, ..., argN*/) {
var result = 0;
$.each(arguments, function() {
result += this;
});
return result;
}
});
Ensuite, vous pouvez passer un certain nombre d'arguments:
alert(jQuery.add(1,2,3,4)); // shows 10
Pour la méthode plus complexe, vous surcharge peut détecter le nombre d'arguments passés et ses types, par exemple:
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
}
}
//...
}
Consultez l'article suivant, il contient une technique très intéressante qui tire parti de certaines fonctionnalités du langage JavaScript comme les fermetures, l'application de la fonction, etc, pour imiter Overload:
Je pense que cela écrasera la première propriété 'add' avec la 2ème – alex
Je suppose que vous vouliez dire "surcharger". Mais comme alex le remarque, la deuxième fonction * va * écraser ** la première ... – Shog9