Guarda le modifiche alle proprietà dell’object in JavaScript

Possibile duplicato:
Javascript Object.Watch per tutti i browser?

Ho appena letto la documentazione di Mozilla per il metodo watch () . Sembra molto utile

Tuttavia, non riesco a trovare qualcosa di simile per Safari. Né Internet Explorer.

Come gestisci la portabilità tra i browser?

Ho creato un piccolo object.watch shim per un po ‘di tempo fa. Funziona in IE8, Safari, Chrome, Firefox, Opera, ecc.

/* * object.watch v0.0.1: Cross-browser object.watch * * By Elijah Grey, http://eligrey.com * * A shim that partially implements object.watch and object.unwatch * in browsers that have accessor support. * * Public Domain. * NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. */ // object.watch if (!Object.prototype.watch) Object.prototype.watch = function (prop, handler) { var oldval = this[prop], newval = oldval, getter = function () { return newval; }, setter = function (val) { oldval = newval; return newval = handler.call(this, prop, oldval, val); }; if (delete this[prop]) { // can't watch constants if (Object.defineProperty) // ECMAScript 5 Object.defineProperty(this, prop, { get: getter, set: setter }); else if (Object.prototype.__defineGetter__ && Object.prototype.__defineSetter__) { // legacy Object.prototype.__defineGetter__.call(this, prop, getter); Object.prototype.__defineSetter__.call(this, prop, setter); } } }; // object.unwatch if (!Object.prototype.unwatch) Object.prototype.unwatch = function (prop) { var val = this[prop]; delete this[prop]; // remove accessors this[prop] = val; }; 

Sfortunatamente, questa non è una soluzione portatile. IE non ha nulla di simile alla mia conoscenza, anche se sarebbe fantastico se ci fosse

Probabilmente potresti implementare il tuo sistema di notifica, sovrascrivendo metodi e variabili. Non lo considero comunque così critico, ma non so cosa pensi di fare con un sistema del genere.