我想在js文件中声明一个对象,如: var o = {p:1};
然后在我的html文件中为它创建一个监视器。
<script>
var o = {p:1};
o.watch("p",function (id, oldval, newval)
{
alert(newval);
return newval;
});
o.p=count;
</script>
这段代码在我的html中工作但是如果我在我的js文件中声明“var o”它不起作用。我想这样做的原因是因为我想在我的js文件中修改我的对象的值在html中检测它。
答案 0 :(得分:1)
我能想到跟踪对象变量更改的唯一方法是使用setter func而不是直接更新值:
<script type="text/javascript">
var o = {
p:1,
q:0,
watches: [],
setProp: function(prop, newVal) {
var oldVal = this[prop];
this[prop] = newVal;
if(typeof(this.watches[prop]) == 'function')
{
this.watches[prop](prop, oldVal, this['prop']);
}
}
};
o.watches["p"] = function (id, oldval, newval) {
alert(newval);
return newval;
};
o.setProp('p', count);
o.setProp('q', 0 - count);
</script>
这是我能想到的最简单的事情,尽管你可能想要为o添加更好的错误检查或者addWatch(prop,func)方法。