[JS] fonction anonyme : optimisable ?

Résolu
Groarh Messages postés 706 Statut Membre -  
Groarh Messages postés 706 Statut Membre -
Bonjour,
je souhaite enrichir une collection d’objets DOM (des liens) en leur ajoutant une fonction. Voici ma collection :

var links = document.getElementsByTagName("a");

La manière de faire qui m’est tout de suite venue à l’esprit est de rajouter une fonction anonyme à chacun des liens, dans une boucle for.

for (var i=links.length; i--;) {
	links.item(i).foo = function() {
		// …
	}
}

Cependant, j’ai l’intuition qu’en faisant comme suit, je passe référence à une fonction unique au lieu de créer une copie de la fonction pour chaque lien :

function foo() {
	// …
}

for (var i=links.length; i--;) {
	links.item(i).foo = foo;
}

Ce qui devrait occuper moins de mémoire. Mais peut-être que les interpréteurs détectent ce genre de situation et optimisent automatiquement…
Qu’en pensez-vous ?
A voir également:

2 réponses

imw Messages postés 233 Statut Membre 42
 
il est clair que les navigateurs ne peuvent pas optimiser ce genre de duplication de code.

Il vaut mieux en effet, passer par un fonction tierce.
A voir cependant, pour le passage de paramêtre, car la fonction n'a plus comme parent l'objet A ...

Nico
0
Groarh Messages postés 706 Statut Membre 185
 
Aucun soucis sur ce point, le contexte est passé dynamiquement, ce qui fait que si j'appelle links.item(3).foo(), this réfère bien à links.item(3).
Sinon de toute façon, un petit call résoud tous les problèmes… ^^
0