Array.observe()

This article needs an editorial review. How you can help.

This is an experimental technology, part of the ECMAScript 2016 (ES7) proposal.
Because this technology's specification has not stabilized, check the compatibility table for usage in various browsers. Also note that the syntax and behavior of an experimental technology is subject to change in future version of browsers as the spec changes.

El mètode Array.observe()s'utilitza per observar canvis en Arrays de forma asíncrona, de forma similar a que Object.observe() ho fa en objectes. Proporciona una corrent de canvis en l'ordre d'aparició. Es equivalent a la crida de Object.observe() amb la llista de tipus acceptar ["add", "update", "delete", "splice"].

Sintaxi

Array.observe(arr, callback)

Paràmetres

arr
L'array que s'ha d'observar.
callback
La funció es crida cada cop que es realitzen canvis, amb el següent argument:
changes
Un array d'objectes cadascun dels quals representa un canvi. Les propietats d'aquests objectes de canvis són:
  • name: El nom de la propietat que s'ha canviat.
  • object: L'array canviat després que s'hagués produït el canvi.
  • type: Una cadena que indica el tipus de canvi que s'ha portat a cap. Un de "add", "update", "delete", o "splice".
  • oldValue: Únicament pel tipus "update" i "delete". El valor abans del canvi.
  • index: Únicament pel tipus "splice". L'índex en el qual s'ha produït el canvi.
  • removed: Únicament pel tipus "splice. Un array dels elements eliminats.
  • addedCount: Únicament pel tipus"splice". EL nombre d'elements afegits.

Descripció

La funció callback es crida cada cop que es realitza un canvi en arr, amb un array de tots els canvis tal i com han succeït.

Els canvis fets a través de mètodes d'Array, com ara Array.prototype.pop()seràn contats com a canvis de "splice". Canvis d'assignació d'índexs que no canvien la llargària de l'array poden contar-se com a canvis "update".

Exemples

Iniciar diferents tipus de canvis

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}]

Especificacions

Strawman proposal for ECMAScript 7.

Compatibilitat amb navegadors

Característica Chrome Firefox (Gecko) Internet Explorer Opera Safari
Suport bàsic 36 Not supported Not supported Not supported Not supported
Característica Android Chrome per Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Suport bàsic Not supported (Yes) Not supported Not supported Not supported Not supported

Vegeu també

Document Tags and Contributors

 Contributors to this page: llue
 Last updated by: llue,