[JS] fonction anonyme : optimisable ?

Résolu
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 ?

2 réponses

  1. 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
    1. 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… ^^