Veraltet
Dieses Feature ist veraltet. Obwohl es in manchen Browsern immer noch funktioniert, wird von seiner Benutzung abgeraten, da es jederzeit entfernt werden kann. Es sollte daher nicht mehr verwendet werden.
Die Array.observe()
Methode wurde für das asyncrone beobachten der Veränderung von Arrays benutzt, ähnlich wie Object.observe()
für Objekte. Sie stellt einen stream von Änderungen in der Reihenfolge in dennen sie auftretten zur Verfügung.
Equivalent zu Object.observe()
und wird ausgeführt mit der liste ["add", "update", "delete", "splice"]
. Diese Funktion wurde als deprecated markiert und aus dem Browser entfernt. Man kann stattdessen das algemeinere Proxy
Objekt benutzen.
Syntax
Array.observe(arr, callback)
Parameter
arr
- Das Array, welches beobachtet wird.
callback
- Die Funktion, welche jedes mal bei einer Änderung aufgerufen wird, mit folgenden Argumenten:
changes
- Ein Array aus Objekten. Jedes repräsentiert eine Änderung. Die Eigenschaften dieser change Objekte sind:
name
: Der Name der Eigenschaft, welche geändert wurde.object
: Das veränderte Array, nachdem die Änderung stattfand.type
: Ein String, welcher den Typ der Änderung darstellt. Er hat den Wert "add", "update", "delete", oder "splice".oldValue
: Nur für "update" und "delete" Typ. Der Wert vor der Änderung.index
: Nur für "splice" Typ. Der Index, an welchem die Änderung stattfand.removed
: Nur für "splice" Typ. Ein Array aus den gelöschten Elementen.addedCount
: Nur für "splice" Typ. Die Anzahl an Elementen, welche hinzugefügt wurden.
Beschreibung
Die callback
Funktion wird jedes mal aufgerufen, wenn eine Änderung in arr stattfindet mit einem Array von allen Änderungen in der Reihenfolge in der sie auftreten
Änderungen über die Array Methoden, wie zum Beispiel Array.prototype.pop()
, werden als "splice" "changes" dargestellt.
Index Änderungen, welche die Länge des Arrays nicht verändern, werden als "update" "changes" dargestellt.
Beispiele
Aufzeichnung verschiedener change Typen
var arr = ['a', 'b', 'c']; Array.observe(arr, function(changes) { console.log(changes); }); arr[1] = 'B'; // [{type: 'update', object: <arr>, name: '1', oldValue: 'b'}] arr[3] = 'd'; // [{type: 'splice', object: <arr>, index: 3, removed: [], addedCount: 1}] arr.splice(1, 2, 'beta', 'gamma', 'delta'); // [{type: 'splice', object: <arr>, index: 1, removed: ['B', 'c', 'd'], addedCount: 3}]
Spezifikationen
Strawman proposal for ECMAScript 7.
Browserkompatibilität
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | 36 [1] | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | Nicht unterstützt | (Ja) | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt |
[1] Deprecated in Chrome 49 und in Chrome 50 markiert und entfernt in Chrome 52