This is an archived page. It's not actively maintained.

Array.observe()

El m茅todo Array.observe() se utiliza para poder observar en forma asincr贸nica los cambios ocurridos en un vector, similar a Object.observe() para los objetos. Provee un flujo ordenado por orden de ocurrencia de los cambios ocurridos en el vector. Es equivalente a invocar Object.observe() con la lista de tipos aceptados: ["add", "update", "delete", "splice"].

Sintaxis

Array.observe(arr, callback)

Par谩metros

arr
El vector a ser observado.
callback
La funci贸n invocada con cada cambio dentro del vector con el siguiente argumento:
changes
Un vector de objetos, cada uno representando un cambio. Las propiedades de estos objetos son:
  • name: El nombre de la propiedad que ha cambiado.
  • object: El vector modificado, despues de la modificaci贸n.
  • type: Una cadena de caracteres indicando el tipo de cambio que ocurri贸. Estos tipos son: "add", "update", "delete", o "splice".
  • oldValue: El valor antes de ser modificado. Solo para  los tipos "update" o "delete".
  • index: La posici贸n del vector en la que ocurrio el cambio. S贸lo para el tipo "splice".
  • removed: Un vector con los elementos borrados. S贸lo para el tipo "splice".
  • addedCount: La cantidad de elementos agregados. S贸lo para el tipo "splice".

Descripci贸n

La funci贸n callback es invocada cada vez que ocurre un cambio en el vector, recibiendo como par谩metro, un vector con todos los cambios ocurridos en el orden en que estos fueron realizados.

Changes done via Array methods, such as Array.prototype.pop() will be reported as "splice" changes. Index assignment changes which do not change the length of the array may be reported as "update" changes.

Los cambios realizados por medio de los metodos del objeto Array, como Array.prototype.pop(), seran reportados como del tipo "splice". Los cambios realizados por indice, que no modifican la cantidad de elementos del vector, podrian ser reportados con el tipo "update".

Ejemplos

Mostrando en consola los diferentes tipos de modificaciones

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

Especificaciones

Strawman proposal for ECMAScript 7.

Compatibilidad de Navegadores

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!
Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support 36 Sin soporte Sin soporte Sin soporte Sin soporte
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support Sin soporte (Yes) Sin soporte Sin soporte Sin soporte Sin soporte

Ver tambi茅n