在js文件中声明javascript对象。

时间:2012-06-30 05:53:25

标签: javascript html

我想在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中检测它。

1 个答案:

答案 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)方法。