https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Object/watch
.watch()メソッドは、これを簡単に実行します。「プロパティに値が割り当てられるのを監視し、それが発生すると関数を実行します。」
長い記述形式:「このオブジェクトのpropという名前のプロパティへの割り当てを監視し、propが設定されるたびにhandler(prop、oldval、newval)を呼び出し、そのプロパティに戻り値を格納します。ウォッチポイントは値の割り当てをフィルタリング(または無効化)できます、変更されたnewvalを返すことによって(またはoldvalを返すことによって)。」
ここですべてのブラウザで動作させるための質問があります:すべてのブラウザ のObject.watch()?
それに似たものを探しています。私が探しているのは、この仕様に合わせるために使用できるメソッドです。「このオブジェクトの任意のプロパティへの割り当てを監視し、それが発生すると関数を実行します。」主な違いは、それが任意のプロパティであり、特定のプロパティだけであるということです。
誰かがそのようなメソッドを作成できますか、またはそのようなメソッドがすでに存在することを知っている場合は、それにリンクしますか?すべてのブラウザで動作させると便利です(マイナスIE、またはIE9に準拠している場合はマイナスIE8)
編集:私が意味することの例として、私はそれが何のために必要かを示します。
var DiscreteLine = function (leftBound, length){
this.positive = [];
this.negative = [];
this.length = length;
this.leftBound = leftBound;
this.rightBound = leftBound + length
if (this.leftBound < 0){
this.negative.length = (leftBound * -1) + 1;
} else {
this.negative.length = 0;
}
if (this.rightBound >= 0){
this.positive.length = rightBound + 1;
} else {
this.positive.length = 0;
}
this.watchObject = new ObjectWatcher(handler(prop, oldval, newval){ /* some stuff */ });
}
次に、たとえば、誰かが次のことをした場合:
theLine = new DiscreteLine(-2, 4);
theLine[-8] = 10;
ハンドラーは、引数( "-8"、undefined、10)を使用して呼び出します。(最終的には、スクリプトがleftBoundプロパティとlengthプロパティを自動的に再計算します(配列がlengthプロパティを自動的に更新する方法など)。