Array.observe()

Esta traducción está incompleta. Por favor, ayuda a traducir este artículo del inglés.

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é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

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support 36 Not supported Not supported Not supported Not supported
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support Not supported (Yes) Not supported Not supported Not supported Not supported

Ver también

Etiquetas y colaboradores del documento

Etiquetas: 
 Colaboradores en esta página: gjurgens
 Última actualización por: gjurgens,