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: , oldValue: 25, type: 'update'}]

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

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

仕様

Strawman proposal specification.

ブラウザ実装状況

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
unobserve
非推奨非標準
Chrome 未対応 36 — 52Edge 未対応 なしFirefox 未対応 なしIE 未対応 なしOpera 未対応 なしSafari 未対応 なしWebView Android 未対応 なしChrome Android 未対応 なしFirefox Android 未対応 なしOpera Android 未対応 なしSafari iOS 未対応 なしSamsung Internet Android 未対応 なしnodejs 未対応 なし

凡例

未対応  
未対応
非標準。ブラウザー間の互換性が低い可能性があります。
非標準。ブラウザー間の互換性が低い可能性があります。
非推奨。新しいウェブサイトでは使用しないでください。
非推奨。新しいウェブサイトでは使用しないでください。

関連情報