私はJavascriptオブジェクトを持っています:
var obj={...};
新しいプロパティが追加/変更されるたびに関数を実行するにはどうすればよいですか:
例えば:
obj["newItem"]=3;
配列にも方法はありますか?(プロトタイプのオーバーライド
push
を除く)同じ変数に別のオブジェクトを割り当てるためにもそれを行う方法はありますか?
例 :
var obj={...}; obj={...}; //redifine
私はJavascriptオブジェクトを持っています:
var obj={...};
新しいプロパティが追加/変更されるたびに関数を実行するにはどうすればよいですか:
例えば:obj["newItem"]=3;
配列にも方法はありますか?(プロトタイプのオーバーライドpush
を除く)
同じ変数に別のオブジェクトを割り当てるためにもそれを行う方法はありますか?
例 :
var obj={...};
obj={...}; //redifine
まさにこの目的のために意図されたObject.observeと呼ばれるものの提案があります。FirefoxのObject.watchに似ています。
柔軟性を高めるProxyオブジェクトもあります。
ただし、どちらも広く実装されているわけではありません。たとえば、Firefox アドオンに取り組んでいる場合は、Proxy を使用できます。
また、質問の最初のポイントには当てはまりますが、最後には当てはまりません。基本的にあなたがやっている場合:
var obj = {a: 1};
obj = {b: 1};
オブジェクトを「再定義」するのではなく、オブジェクト自体に触れず、別のオブジェクトを同じ変数に割り当てるだけです。変更を監視する場合、その変数はオブジェクトのプロパティである必要があります。たとえば、ブラウザでは、グローバル変数は自動的にグローバル オブジェクトのプロパティにwindow
なるため、そのようにすることができます。