Skip to content
Snippets Groups Projects
Commit 65a6b922 authored by Jeremy Kersten's avatar Jeremy Kersten
Browse files

[FIX] Add prototype watch in js object. That will allow to listen change on...

[FIX] Add prototype watch in js object. That will allow to listen change on some library for example. It's used to know if jquery is overrided by an external script.

bzr revid: jke@openerp.com-20140414145802-osjcjj01f8ehwsqc
parent 2429e04e
Branches
Tags
No related merge requests found
(function() {
/*
* 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;
return newval = handler.call(this, prop, oldval, val);
}
;
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;
}
});
}
})();
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment