tutorial objeto herencia ejemplos create crear javascript object cross-browser properties watch

herencia - Esté atento a los cambios en las propiedades del objeto en JavaScript



prototype javascript ejemplos (3)

Posible duplicado:
JavaScript Object.Watch para todos los navegadores?

Acabo de leer la documentación de Mozilla para el método watch () . Se ve muy útil.

Sin embargo, no puedo encontrar algo similar para Safari. Ni Internet Explorer.

¿Cómo gestionas la portabilidad en todos los navegadores?


He creado un pequeño objeto. Revisar esto hace un tiempo. Funciona en IE8, Safari, Chrome, Firefox, Opera, etc.

/* * 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; };


Lamentablemente, esta no es una solución portátil. IE no tiene nada como esto que yo sepa, aunque sería increíble si hubiera


Probablemente podría implementar su propio sistema de notificación, sobrescribiendo métodos y variables. No creo que sea tan crítico, pero no sé qué piensas hacer con un sistema así.