https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Object/watchJavascript: Mozilla fonctionnalité .Voir() pour toutes les propriétés d'un objet (éventuellement cross-browser)
La méthode .Voir() le fait en bref: « Montres pour une propriété à attribuer une valeur et exécute une fonction lorsque cela se produit. "
Longue forme descriptive: "Watches pour l'affectation à une propriété nommée prop dans cet objet, appel gestionnaire (prop, oldval, newval) chaque fois que prop est défini et stockant la valeur de retour dans cette propriété.Un point de contrôle peut filtrer (ou annuler) l'affectation de valeur, en retournant un newval modifié (ou en renvoyant oldval). "
Il y a une question pour la faire fonctionner dans tous les navigateurs ici: Object.watch() for all browsers?
Je cherche quelque chose de semblable à cela. Ce que je recherche est une méthode que je peux utiliser pour adapter cette spécification: "Watches pour l'affectation à n'importe quelle propriété dans cet objet et exécute une fonction lorsque cela se produit." La principale différence est que c'est n'importe quelle propriété, et n'importe quelle propriété spécifique.
Quelqu'un peut-il créer une telle méthode ou s'il sait qu'une telle méthode existe déjà, y faire un lien? Il serait utile de le faire fonctionner dans tous les navigateurs (moins IE, ou moins IE8 si IE9 est conforme)
Éditer: Pour un exemple de ce que je veux dire, je vais montrer ce que j'ai besoin pour.
var DiscreteLine = function (leftBound, length){
this.positive = [];
this.negative = [];
this.length = length;
this.leftBound = leftBound;
this.rightBound = leftBound + length
if (this.leftBound < 0){
this.negative.length = (leftBound * -1) + 1;
} else {
this.negative.length = 0;
}
if (this.rightBound >= 0){
this.positive.length = rightBound + 1;
} else {
this.positive.length = 0;
}
this.watchObject = new ObjectWatcher(handler(prop, oldval, newval){ /* some stuff */ });
}
Puis, lorsque, par exemple, si quelqu'un a fait ce qui suit:
theLine = new DiscreteLine(-2, 4);
theLine[-8] = 10;
Le gestionnaire appellerait, avec les arguments ("-8", non défini, 10). (Ce qui finirait par se produire, c'est que le script recalculerait automatiquement les propriétés leftBound et length (comme la mise à jour automatique de la propriété length par Arrays)
Je ne vois pas comment on peut créer un observateur de toutes les propriétés d'un objet en utilisant cette méthode. En outre, Firefox 4.0 le supportera, au minimum. Cela permet de changer les aspects clés d'une propriété (quelque chose qui me sert de toute façon), mais pas de regarder l'objet. – Havvy