2

私はJavascriptオブジェクトを持っています:

var obj={...};

  • 新しいプロパティが追加/変更されるたびに関数を実行するにはどうすればよいですか:

    例えば:obj["newItem"]=3;

  • 配列にも方法はありますか?(プロトタイプのオーバーライドpushを除く)

  • 同じ変数に別のオブジェクトを割り当てるためにもそれを行う方法はありますか?

    例 :

    var obj={...};
        obj={...}; //redifine
    
4

1 に答える 1

0

まさにこの目的のために意図されたObject.observeと呼ばれるものの提案があります。FirefoxのObject.watchに似ています。

柔軟性を高めるProxyオブジェクトもあります。

ただし、どちらも広く実装されているわけではありません。たとえば、Firefox アドオンに取り組んでいる場合は、Proxy を使用できます。

また、質問の最初のポイントには当てはまりますが、最後には当てはまりません。基本的にあなたがやっている場合:

var obj = {a: 1};

obj = {b: 1};

オブジェクトを「再定義」するのではなく、オブジェクト自体に触れず、別のオブジェクトを同じ変数に割り当てるだけです。変更を監視する場合、その変数はオブジェクトのプロパティである必要があります。たとえば、ブラウザでは、グローバル変数は自動的にグローバル オブジェクトのプロパティにwindowなるため、そのようにすることができます。

于 2013-04-07T11:00:48.443 に答える