web-dev-qa-db-ja.com

Javascriptオブジェクトの変更を検出する

このGistは、オブジェクトの指定されたフィールドの変更を検出することがわかりました: https://Gist.github.com/3138469

ただし、イベントは1つのフィールドにのみバインドされます。

Javascriptオブジェクト全体の変更を検出するための関数やトリックを知っている人はいますか?

15
Unitech

2019更新:最近では、これは プロキシAPI を使用してはるかに効率的な方法で実現できます。 変更時ライブラリ は、これをさらに簡単にするために、バックグラウンドでProxyAPIを使用します。

2012更新:Watch.jsの作成者が、はるかに幅広いブラウザーのサポートを備えたライブラリを参照していることに気づきました。 MultiGetSet.JS

これを実現したいときは、通常 Watch.js を使用しますが、オブジェクト全体または1つの属性を監視できます。

17
Adi

現在、これは不可能です。個々のプロパティに対してのみゲッター/セッターを定義できます。

それでも、それを行うことができる Proxy オブジェクトのドラフトがあります。今日では、それは FirefoxのJavascript 1.8.5でサポートされています のみです。

3
Bergi

これはwatch.jsを使用しては不可能です。オブジェクトの変更またはオブジェクトの属性を検出するだけです。オブジェクトに属性を追加したか、新しく追加した属性を変更したかは検出されません。

2
user2820213