MDN wants to learn about developers like you: https://qsurvey.mozilla.com/s3/MDN-dev-survey

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

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.

ブラウザ実装状況

機能 Chrome Firefox (Gecko) Internet Explorer Opera Safari
基本サポート 36 [1] 未サポート 未サポート 未サポート 未サポート
機能 Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
基本サポート 未サポート (有) 未サポート 未サポート 未サポート 未サポート

[1] Chrome 49 で非推奨となり、Chrome 50 でフラグがオフに設定され、Chrome 52 で完全に削除されました。

関連情報

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

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