Array.observe()

已废弃
This feature is obsolete. Although it may still work in some browsers, its use is discouraged since it could be removed at any time. Try to avoid using it.

Array.observe() 方法用于异步监视数组发生的变化,类似于针对对象的 Object.observe() 。当数组的值发生变化时,它按发生顺序提供了一个变化流。与 Object.observe() 类似,它由如下可接受的变化类型列表["add"、"update"、"delete"、"splice"]触发。

语法

Array.observe(arr, callback)

参数

arr
用于被监视的数组
callback
每当数组发生变化时,使用如下参数调用该函数:
changes
用于表示变化的对象数组。每个变化对象的属性如下:
  • name: 变化的属性名。
  • object: 变化后的数组。
  • type: 用于表示变化类型的字符串。其取值为"add"、"update"、"delete""splice"之一。
  • oldValue: 仅用于"update""delete"类型。变化之前的取值。
  • index: 仅用于"splice"类型。变化发生所在索引。
  • removed: 仅用于"splice"类型。被删除元素组成的数组。
  • addedCount: 仅用于"splice"类型。被添加的元素数量。

描述

每次 arr 发生任何变化时,回调函数将被调用,调用参数为所有变化按发生顺序组成的数组。

通过Array方法如 Array.prototype.pop( ) 触发的变化将被报告成"splice"变化,长度不变但索引赋值发生变化的将被报告成"update"变化。

示例

Example: Logging different change types

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

标准规范

Strawman proposal specification.

浏览器支持

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support 36 未实现 未实现 未实现 未实现
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support 未实现 (Yes) 未实现 未实现 未实现 未实现

相关内容

文档标签和贡献者

 此页面的贡献者: RandyOu, Ende93, KingMario, jackyKin
 最后编辑者: RandyOu,