Salut à tous !
En parcourant la doc de Greasemonkey, je viens de faire une trouvaille intéressante : la méthode Object.watch() de Netscape et ses héritiers.
Cette méthode consiste à surveiller l’affectation d’une propriété d’un objet (ainsi que les variables globales si l’objet est window). Un exemple :
Lorsqu’une propriété est ainsi surveillée, l’affectation se fait avec la valeur de retour de la fonction et non plus avec la valeur initialement passée.
Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 var o = {}; o.watch('x', function( propName, oldValue, newValue ) { console.log(propName + ' modified from ' + oldValue + ' to ' + newValue); return newValue; }); o.x = 42;
Bien sûr, cette méthode a été implémentée a des fins de contrôle amélioré, par exemple vérifier qu’un nombre est bien dans un intervalle. On peut même rendre des propriétés readonly !
Mais ma première impression a été que ça ne respecte pas l’esprit du langage. Ça ressemble plus à du C++ avec sa surcharge de l’opérateur d’affectation. Le code est moins prévisible, on a des imprévus lorsqu’on utilise dynamiquement les noms de propriétés, etc.
Donc en dépit de la puissance de cette méthode, je me dis que c’est pas plus mal qu’elle ne fasse pas partie du standard (à ce que j’ai pu voir, on n’a rien d’équivalent sous IE).
Et vous, qu’en pensez-vous ?
https://developer.mozilla.org/en/Cor...s/Object/watch
Partager