Diferència entre revisions de la pàgina «Solucio sobrecarrega de funcions»

De wikiserver
Dreceres ràpides: navegació, cerca
(Es crea la pàgina amb «<pre> function afegirMetode(objecte, nom, funcio){ var old = objecte[nom]; objecte[nom] = function(){ if(funcio.length == arguments.length) return funcio.appl…».)
 
 
Línia 1: Línia 1:
<pre>
+
<source lang="java">
 
function afegirMetode(objecte, nom, funcio){
 
function afegirMetode(objecte, nom, funcio){
 
var old = objecte[nom];
 
var old = objecte[nom];
Línia 40: Línia 40:
 
alert("Crida a la funcio amb el parametre 'a': \n " + usuaris.trobar('a'));
 
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'));
 
alert("Crida a la funcio amb els parametres 'jaume' i 'pontons': \n " + usuaris.trobar('jaume','pontons'));
</pre>
+
</source>

Revisió de 17:38, 11 oct 2017

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'));