JavaScript中是否有一种方法可以让事件像监听变量中的变化一样?所以当它的值被修改时,事件触发,然后我可以调用一个函数。为了将更多内容放到上下文中,我有一个函数来处理对象数组的html呈现,我希望每次修改数组时都会自动调用该函数。
感谢。
答案 0 :(得分:7)
使用object.watch
docs如果本机不支持,请查看此实现:Object.watch() for all browsers?
答案 1 :(得分:6)
我认为你的要求是不可能的。
解决方案可能是:
但它需要你重写一些代码。
答案 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]);
我个人并不是为基础原型添加新方法的忠实粉丝,但它使得在短期内更容易重构。