Plato on Github
Report Home
src/core/watch.js
Maintainability
126.22
Lines of code
41
Difficulty
17.82
Estimated Errors
0.24
Function weight
By Complexity
By SLOC
/* * object.watch polyfill * * 2012-04-03 * * By Eli Grey, http://eligrey.com * Public Domain. * NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. */ // object.watch if (!Object.prototype.watch) { Object.defineProperty(Object.prototype, "watch", { enumerable: false, configurable: true, writable: false, value: function(prop, handler) { var oldval = this[prop], newval = oldval, getter = function() { return newval; }, setter = function(val) { oldval = newval; newval = handler.call(this, prop, oldval, val); return newval; }; if ( delete this[prop]) {// can't watch constants Object.defineProperty(this, prop, { get: getter, set: setter, enumerable: true, configurable: true }); } } }); } // object.unwatch if (!Object.prototype.unwatch) { Object.defineProperty(Object.prototype, "unwatch", { enumerable: false, configurable: true, writable: false, value: function(prop) { var val = this[prop]; delete this[prop]; // remove accessors this[prop] = val; } }); }