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

オブジェクト変数への変更を追跡するために私が考えることができる唯一のアプローチは、値を直接更新する代わりにセッター関数を使用することです。

<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) メソッドを追加したりすることをお勧めします。

于 2012-06-30T06:57:00.797 に答える