##observer.js
用于观察任意对象的任意变化的类库。 支持 ES7 Object.observe, IE 6 7 8
var obj = { a: 1 };
observer.on(obj, function (name, value , old) {
console.log(name + "__" + value + "__" + old);
});
obj.a = 2; //a__2__1
var arr = [1, 2, 3];
observer.on(arr, function(name, value, old) {
console.log(name + "__" + value + "__" + old);
});
arr.push(4); //Array-push__[1,2,3,4]__[1,2,3]
arr[2] = 5; //2__5__3 length__4__3
var complexObj = {
a: 1,
b: 2,
c: [{
d: [4]
}]
};
observer.on(complexObj, 'c[0].d', function(name, value, old) {
console.log(name + "__" + value + "__" + old);
});
complexObj.c[0].d = 100; //c[0].d__100__4
var User = function(name, age) {
this.name = name;
this.age = age;
//只监听name
observer.on(this, ["name"], function(name, value, oldValue) {
console.log(name + "__" + value + "__" + oldValue);
});
}
var user = new User("lisi", 25);
user.name = "wangwu"; //name__wangwu__lisi
user.age = 20; //nothing,no listener
This content is released under the (http://opensource.org/licenses/MIT) MIT License.