4

Object.watch: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/watch

Object.observe: http://wiki.ecmascript.org/doku.php?id=harmony:observe

どちらも高いレベルで同じことをしているようです。それらの顕著な違いは何ですか?

4

1 に答える 1

2

多くの違いがあります。

マイクロタスクと同期コールバック

1 つの違いはObject.observe、メッセージ ループに入ったときにコールバックを作成することです。つまり、オブジェクトへの多くの変更は、複数のコールバックではなく、すべての変更を含む単一のコールバックになります。

DOM の変更をリッスンする場合、同じ理由でミューテーション イベントがミューテーション オブザーバーに置き換えられました。このmicrotaskソリューションは、同期コールバックよりもパフォーマンスが優れています。

標準と非標準

さらに、Object.observeEcmascript 7 の提案された Ecmascript 標準です。つまり、提案された Javascript 標準です。

意図

Object.observe は、オブジェクト全体への変更を監視するパフォーマンスの高い方法として意図されており、ユース ケースでは多くのオブジェクトをリッスンする必要があると予想されます。これは、AngularJs や Polymer などのバインド フレームワーク (つまり、クライアント側のテンプレート) の要件です。Object.watch は、特定のプロパティを監視するための Firefox の機能であり、デバッガー機能から生まれました。

于 2014-06-24T19:48:18.047 に答える