Obsolète
Cette fonctionnalité est obsolète. Bien qu'encore supportée par des navigateurs, son utilisation est découragée pour tout nouveau projet. Évitez de l'utiliser.

La méthode Array.observe() est utilisée afin d'observer les modifications apportées à un tableau de façon asynchrone. Elle fonctionne de la même façon que la méthode Object.observe() pour les objets. Cette méthode fournit un flux de changements, triés dans l'ordre dans lequel ils se sont produits. Utiliser cette méthode est équivalent à appeler Object.observe() avec la liste ["add", "update", "delete", "splice"] comme troisième argument. Toutefois, cette API a été dépréciée et retirée des navigateurs. Il est préférable d'utiliser l'objet Proxy, plus générique, à la place.

Syntaxe

Array.observe(arr, callback)

Paramètres

arr
Le tableau qu'on souhaite observer.
callback
La fonction à appeler à chaque fois que des changements sont effectués. Cette fonction est appelée avec l'argument suivant :
changes
Un tableau d'objets représentant chacun une modification. Les propriétés de ces objets sont :
  • name : Le nom de la propriété qui a été modifiée.
  • object : Le tableau modifié (une fois que la modification a été effectuée).
  • type : Une chaîne de caractères indiquant le type de modification qui a eu lieu. Elle peut valoir "add" (pour ajout), "update" (pour modification), "delete"(pour suppression) ou "splice" (pour découpage).
  • oldValue : Propriété présente uniquement lorsque le type vaut "update" ou "delete". La valeur de la propriété est la valeur avant qu'elle ait été modifiée.
  • index : Propriété présente uniquement lorsque le type vaut "splice". L'index auquel la modification a eu lieu.
  • removed : Propriété présente uniquement lorsque le type vaut "splice". Le tableau des éléments supprimés.
  • addedCount : Propriété uniquement présente lorsque le type vaut "splice". Le nombre d'éléments ajoutés.

Description

La fonction callback est appelée à chaque fois qu'un changement est apporté à arr, elle est appelée avec un argument qui est un tableau contenant tous les changements qui se sont produits, dans l'ordre dans lequel ils se sont produits. 

Les modifications apportées avec les méthodes d'Array, comme Array.prototype.pop(), seront enregistrées avec le type "splice". Les modifications d'éléments qui ne modifient pas la longueur du tableau sont enregistrés en tant qu'update".

Exemples

Enregistrer les différents types de modifications

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'], addedCount: 3}]

Spécifications

Proposition de spécification (Strawman proposal) (en anglais).

Compatibilité des navigateurs

Update compatibility data on GitHub
OrdinateurMobileServeur
ChromeEdgeFirefoxInternet ExplorerOperaSafariWebview AndroidChrome pour AndroidEdge MobileFirefox pour AndroidOpera pour AndroidSafari sur iOSSamsung InternetNode.js
Support simple
ObsolèteNon-standard
Chrome Aucun support 36 — 52Edge Aucun support NonFirefox Aucun support NonIE Aucun support NonOpera Aucun support NonSafari Aucun support NonWebView Android Aucun support NonChrome Android Aucun support NonEdge Mobile Aucun support NonFirefox Android Aucun support NonOpera Android Aucun support NonSafari iOS Aucun support NonSamsung Internet Android Aucun support Nonnodejs Aucun support Non

Légende

Aucun support  
Aucun support
Fonctionnalité non-standard. Celle-ci peut être incorrectement supportée par les autres navigateurs.
Fonctionnalité non-standard. Celle-ci peut être incorrectement supportée par les autres navigateurs.
Obsolète. Les nouveaux sites web ne doivent pas utiliser cette fonctionnalité.
Obsolète. Les nouveaux sites web ne doivent pas utiliser cette fonctionnalité.

Voir aussi

Étiquettes et contributeurs liés au document

Contributeurs à cette page : SphinxKnight
Dernière mise à jour par : SphinxKnight,