[JS] fonction anonyme : optimisable ?

Résolu
Groarh Messages postés 682 Date d'inscription   Statut Membre Dernière intervention   -  
Groarh Messages postés 682 Date d'inscription   Statut Membre Dernière intervention   -
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 Date d'inscription   Statut Membre Dernière intervention   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 682 Date d'inscription   Statut Membre Dernière intervention   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