[JS] fonction anonyme : optimisable ?
Résolu
Groarh
Messages postés
706
Statut
Membre
-
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 :
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.
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 :
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 ?
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
-
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 -
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… ^^