Solucio sobrecarrega de funcions
De wikiserver
La revisió el 17:38, 11 oct 2017 per Jnoguera (Discussió | contribucions)
function afegirMetode(objecte, nom, funcio){
var old = objecte[nom];
objecte[nom] = function(){
if(funcio.length == arguments.length)
return funcio.apply(this, arguments);
else if (typeof old == 'function')
return old.apply(this, arguments);
};
}
var usuaris = {
noms : ["joan garcia", "jaume pontons", "ana riu", "marta aran", "alex fornell", "mariona cots"]
};
// afegim funció sense paràmetres
afegirMetode(usuaris, "trobar", function(){ return this.noms; } );
//afegir funció amb 1 paràmetre
afegirMetode(usuaris, "trobar", function (cadena){
var ret = [];
for(var i = 0; i < this.noms.length; i++)
if(this.noms[i].indexOf(cadena) == 0)
ret.push(this.noms[i]);
return ret;
});
//afegir funció amb 2 paràmetres
afegirMetode(usuaris, "trobar", function(nom, cognom){
var ret = [];
for(var i = 0; i < this.noms.length; i++)
if(this.noms[i] == (nom + " " + cognom))
ret.push(this.noms[i]);
return ret;
});
//prova-ho:
alert("Crida a la funcio sense parametres: \n " + usuaris.trobar());
alert("Crida a la funcio amb el parametre 'a': \n " + usuaris.trobar('a'));
alert("Crida a la funcio amb els parametres 'jaume' i 'pontons': \n " + usuaris.trobar('jaume','pontons'));