Comment faire pour exécuter une fonction en JavaScript à chaque fois qu'une modification de la variable?
Est-il un moyen en JavaScript pour avoir quelque chose comme un événement qui est à l'écoute des changements dans une variable? ainsi, lorsque sa valeur est modifiée déclenche l'événement et puis je peux appeler une fonction. Pour dire les choses dans le contexte, j'ai une fonction qui gère le rendu html d'un tableau d'objets, et je veux que cette fonction est appelée automatiquement à chaque fois que le tableau est modifié.
Grâce.
setters
sont des "aidants" qui peut analyser la variable à régler d'abord. Pas sûr de ce que les possibilités et le niveau de contrôle que vous avez sur votre code, mais dans la définition, vous pouvez appeler la fonction.
Vous devez vous connecter pour publier un commentaire.
Utilisation
de l'objet.montre
docs et si il n'est pas pris en charge nativement oeil à cette mise en œuvre: Objet.watch() pour tous les navigateurs?Je ne pense pas que ce que vous demandez est possible.
Une solution pourrait être de :
Mais ça va vous obliger à réécrire un peu de votre code.
Dans ECMAScript 5 il y a des propriétés de lecture/définition... Lire ici: http://ejohn.org/blog/ecmascript-5-objects-and-properties/
Non-IE des navigateurs prennent en charge quelque chose de similaire:
http://robertnyman.com/2009/05/28/getters-and-setters-with-javascript-code-samples-and-demos/
Pour IE, vous aurez à attendre pour IE9, ou utilisez uniquement des DOM-bases de getters/setters.
Vous pouvez utiliser
setInterval
de vérifier sa valeur, de sorte que le nombre de fois par seconde, et l'enregistrer dans une variable distincte. Vous pouvez vérifier à chaque fois si la variable réelle est différente de l'autre. Dans ce cas, appelez la fonction.C'est un sale truc, si.
Parce que JavaScript n'est pas universellement support méthodes setter/getter encore, je vous recommande de réfléchir à la façon dont vous définissez vos variables. Une technique qui fonctionne est:
Personnellement, je suis pas un grand fan de l'ajout de nouvelles méthodes à base de prototypes, mais cela rend les choses plus facile de refactoriser à court terme.