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 |