Array.observe()

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

See also

Schlagwörter des Dokuments und Mitwirkende

Schlagwörter: 
 Mitwirkende an dieser Seite: schlagi123, oliver-j
 Zuletzt aktualisiert von: schlagi123,