J'ai une question simple à propos de jQuery mais plutôt des approches javascript en général ...jquery: contexte avec des fermetures?
Est-ce que ça fonctionne? :
this._checkedTexts.length = 0; // <- array belonging to "me"
var contextCheckedTexts = this._checkedTexts;
$('#valueContainer input:checked').each(function() {
contextCheckedTexts.push($(this).text());
});
Puisque 'ceci' pointe vers l'élément, j'utilise une fermeture ici pour garder un contexte supplémentaire pour le 'chaque' gestionnaire.
Est-ce la manière «comment c'est fait» ou pourrait-il y avoir n'importe quel risque impliqué en utilisant une fermeture de cette façon (memoryleak-sage ....)?
Quelles sont les autres options disponibles? Je trouve cela très pratique - mais je suis toujours un peu inquiet à propos de l'introduction de problèmes de comptage de références lors de l'utilisation de fermetures - qui seront difficiles à trouver plus tard.
Assez impressionnant :) J'aime jQuery de plus en plus ... merci pour l'indice !! - mais encore, la question demeure: est-ce ok (et l'approche habituelle) d'utiliser des fermetures pour le contexte à une fonction qui a le «mauvais» ce-pointeur? – Wolfgang
oui c'est bien d'utiliser des fermetures ... mais si vous le faites, faites comme ça, 'var self = this;' ... pour que vous puissiez appeler d'autres propriétés en utilisant 'self'. par exemple. 'self._checkedTexts.push ($ (this) .text()) ;. avec cela, vous éliminez déjà 'var contextCheckedTexts = this._checkedTexts; ... – Reigel
... ressemble à un plan - et aussi si je le fais de cette façon à chaque fois, il y a probablement moins de confusion :) merci! – Wolfgang