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

Array.observe() メソッドは、配列への変更を非同期で監視するために使用されました。オブジェクト用の Object.observe() と似ています。変更内容は、発生した順番に時系列で提供されます。accept type list ["add", "update", "delete", "splice"] で呼び出された Object.observe() と同等です。しかしながら、この API の使用は非推奨となり、ブラウザから削除されています。代わりに、一般的な Proxy オブジェクトを使用してください。

構文

Array.observe(arr, callback)

引数

arr
監視される配列。
callback
変更されるたびに毎回呼び出される関数。次の引数を持ちます:
changes
変更されたオブジェクトの配列。変更オブジェクトのプロパティは次の通り:
  • name: 変更されたプロパティの名前。
  • object: 変更後の配列。
  • type: 変更の種類を示す文字列。 "add", "update", "delete", "splice" のいずれか一つ。
  • oldValue: "update", "delete" の場合のみ、変更前の値。
  • index: "splice" の場合のみ。変更が発生したインデックス。
  • removed: "splice" の場合のみ。取り除かれた要素の配列。
  • addedCount: "splice" の場合のみ。追加された要素の数。

説明

callback 関数は、arr に変更が発生する度に呼ばれます。すべての変更が発生した順に配列として渡されます。

Array.prototype.pop() など、Array メソッド経由の変更は、"splice" 変更として報告されます。配列の長さが変更されないインデックスの割り当て変更は、"update" 変更として報告されます。

異なる変更のログを取る

var arr = ['a', 'b', 'c'];

Array.observe(arr, function(changes) {
  console.log(changes);
});

arr[1] = 'B';
// [{type: 'update', object: , name: '1', oldValue: 'b'}]

arr[3] = 'd';
// [{type: 'splice', object: , index: 3, removed: [], addedCount: 1}]

arr.splice(1, 2, 'beta', 'gamma', 'delta');
// [{type: 'splice', object: , index: 1, removed: ['B', 'c', 'd'], addedCount: 3}]

仕様

Strawman proposal specification.

ブラウザ実装状況

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

凡例

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

 

関連情報

ドキュメントのタグと貢献者

このページの貢献者: teoli, isdh, Marsf, shide55
最終更新者: teoli,