在Javascript中更改数据结构时触发函数

时间:2014-01-29 18:22:53

标签: javascript jquery client-side

我正在开展一个非常简单的项目,如果它更大,我会使用角度或主干,或其他一些MVC库。在我的情况下,我只需要在更改数组/对象时触发函数。实现这一目标的最简单方法是什么?

1 个答案:

答案 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,并且效果非常好。