如何在变量每次更改时在JavaScript中运行函数?

时间:2011-03-12 12:36:41

标签: javascript function variables

JavaScript中是否有一种方法可以让事件像监听变量中的变化一样?所以当它的值被修改时,事件触发,然后我可以调用一个函数。为了将更多内容放到上下文中,我有一个函数来处理对象数组的html呈现,我希望每次修改数组时都会自动调用该函数。

感谢。

5 个答案:

答案 0 :(得分:7)

使用object.watchdocs如果本机不支持,请查看此实现:Object.watch() for all browsers?

答案 1 :(得分:6)

我认为你的要求是不可能的。

解决方案可能是:

  • 将您的数据封装到特定对象
  • 使用该对象的setter方法访问该数据
  • 有这个setter方法:
    • 设置数据
    • 致电您的职能

但它需要你重写一些代码。

答案 2 :(得分:2)

在ECMAScript 5中有getter / setter属性...请在此处阅读:http://ejohn.org/blog/ecmascript-5-objects-and-properties/

非IE浏览器支持类似的东西:

http://robertnyman.com/2009/05/28/getters-and-setters-with-javascript-code-samples-and-demos/

对于IE,你必须等待IE9,或者只使用基于DOM的getter / setter。

答案 3 :(得分:1)

您可以使用setInterval每秒多次检查其值,并将其保存到单独的变量中。您可以每次检查实变量是否与另一个变量不同。在这种情况下,请调用该函数。

但这是一个肮脏的伎俩。

答案 4 :(得分:1)

因为JavaScript还没有普遍支持setter / getter方法,所以我建议您考虑如何设置变量。一种可行的技术是:

Array.prototype.setMember = function(index,newValue) {
    alert("I will perform some action here");
    this[index] = newValue;
}

var myArray = [1,2,3];
// x[0] = 11; // Don't do this any more
x.setMember(0,11);
alert(x[0]);

我个人并不是为基础原型添加新方法的忠实粉丝,但它使得在短期内更容易重构。