Array.observe() - JavaScript 编辑
已废弃
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.
浏览器支持
The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.No compatibility data found. Please contribute data for "javascript.builtins.Array.observe" (depth: 1) to the MDN compatibility data repository.
相关内容
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论