1

我想在 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。

4

1 回答 1

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>

这是我能想到的最简单的事情,尽管您可能想要添加一些更好的错误检查或 addWatch(prop, func) 方法到 o.

于 2012-06-30T06:57:00.797 回答