See : The harmony proposal page.
This shim provides an implementation of the algorithms described in the harmony proposal, and is intended to work on all ES5-compliant browsers.
While this implementation does not have dependencies, it tries to use "setImmediate" if present, and fall back on setTimeout if it is not, it is recommended to use a setImmediate shim for browsers that do not support it natively. ( A good one can be found here )
While this shim provides an implementation for the Object methods, and the Notifier prototype described in the proposal, it does not try to catch and notify by any means changes made to an object. Instead it let you call manually the notify method :
Object.getNotifier(myObject).notify({ type : "updated" , ....});
The 'observe-utils.js' utilities that facilitate the use of this shim can be found on his own repository
This shim does not try to detect the Object.observe feature presence, instead it leaves you the charge to detected it, and to conditionally load this shim, using the feature detection library of your choice.
var myObject = {};
ObserveUtils.defineObservableProperties(myObject, "foo", "bar");
Object.observe(myObject, function (changes) {
console.log(changes);
});
myObject.foo = "Hello";
myObject.bar = "World";
//log
[
{
name : "foo",
object : myObject,
oldValue : undefined,
type : "updated"
},
{
name : "bar",
object : myObject,
oldValue : undefined,
type : "updated"
}
]
Require bower and grunt-cli installed on your machine.
npm install & bower install
grunt // test and build
grunt test // test only