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