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

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.

ブラウザ実装状況

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

機能 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,