我正在开展一个非常简单的项目,如果它更大,我会使用角度或主干,或其他一些MVC库。在我的情况下,我只需要在更改数组/对象时触发函数。实现这一目标的最简单方法是什么?
答案 0 :(得分:0)
这是一种使用getter / setter监视对象属性的简单而有效的方法:
var myObj={a:1, b:2, c:3};
function watch(obj, prop, callBack){
var x=obj[prop];
Object.defineProperty(
obj, prop,
{get:function(){return x;},
set:function(n){ callBack(n,x); x=n; }
}) ;
}
watch(myObj, "b", function(n,x){
alert("was:"+x+", now " + n);
});
myObj.b=123; // shows: "was 2, now 123"
我已经根据这个概念和小胡子构建了一个简单的MVC,并且效果非常好。