Object.unobserve()

廃止
この機能は廃止されました。まだいくつかのブラウザーで動作するかもしれませんが、いつ削除されてもおかしくないので、使わないようにしましょう。

Object.unobserve() メソッドは、Object.observe() メソッドで設定した監視の解除に使われていましたが、非推奨となりブラウザーから削除されました。代わりに、一般的な Proxy オブジェクトを使用してください。

構文

Object.unobserve(obj, callback)

引数

obj
監視を停止するオブジェクト。
callback
オブジェクト obj の変更ごとに呼び出される、停止したい監視オブジェクトへの参照。

戻り値

指定したオブジェクト。

説明

オブジェクトからオブザーバを削除 (監視を解除) するには、Object.unobserve()Object.observe() の後に呼び出す必要があります。

コールバックは関数への参照でなければならず、ここに匿名関数を使用しないでください。なぜなら、この参照は事前に行った監視の解除に使われるからです。コールバックとして匿名関数を使った場合、監視を解除できないので、Object.unobserve() の呼び出しは無意味となります。

使用例

オブジェクト監視の解除

var obj = {
  foo: 0,
  bar: 1
};

var observer = function(changes) {
  console.log(changes);
}

Object.observe(obj, observer);
​
obj.newProperty = 2;
// [{name: 'newProperty', object: <obj>, type: 'add'}]

Object.unobserve(obj, observer);

obj.foo = 1;
// コールバックは呼び出されない。

匿名関数を使った場合

var person = {
  name: 'Ahmed',
  age: 25
};

Object.observe(person, function(changes) {
  console.log(changes);
});

person.age = 40; 
// [{name: 'age', object: <obj>, oldValue: 25, type: 'update'}]

Object.unobserve(person, function(changes) {
  console.log(changes);
});

person.age = 63;
// [{name: 'age', object: , oldValue: 40, type: 'update'}]
// コールバックが常に呼び出される。

仕様書

どの標準にも含まれていません。 Strawman が提案した仕様書はこちらです。

Browser compatibility

どこでも対応されていません。歴史的には Firefox 36 から 52 が対応していました。

関連情報