Iterator - JavaScript 编辑
非标准。
Iterator
函数是一个 SpiderMonkey 专有特性,并且会在某一时刻被删除。为将来使用的话,请考虑使用 for...of
循环和 迭代协议。Iterator
函数返回一个对象,它实现了遗留的迭代协议,并且迭代了一个对象的可枚举属性。
语法
Iterator(object, [keyOnly])
参数
object
- 要迭代属性的对象。
keyOnly
- 如果
keyOnly
是真值,Iterator.prototype.next
只返回property_name
。
描述
返回迭代了object的Iterator
实例。如果keyOnly
为假值,则Iterator
实例返回每次迭代而生成的 [property_name, property_value]
数组,否则,如果keyOnly
是真值,则它返回每次迭代的 property_name
。如果object
是 Iterator
实例或 Generator
实例 ,则它返回 object
自身。
属性
Iterator.prototype[@@iterator]
- 返回一个函数,它返回符合迭代协议的迭代对象。
方法
Iterator.prototype.next
- 返回
[property_name, property_value]
格式或property_name
的下一项。 如果没有更多项,抛出StopIteration
。
示例
迭代一个对象的属性
var a = {
x: 10,
y: 20,
};
var iter = Iterator(a);
console.log(iter.next()); // ["x", 10]
console.log(iter.next()); // ["y", 20]
console.log(iter.next()); // throws StopIteration
使用遗留的解构for-in迭代对象的属性
var a = {
x: 10,
y: 20,
};
for (var [name, value] in Iterator(a)) {
console.log(name, value); // x 10
// y 20
}
使用for-of迭代
var a = {
x: 10,
y: 20,
};
for (var [name, value] of Iterator(a)) { // @@iterator is used
console.log(name, value); // x 10
// y 20
}
迭代属性名
var a = {
x: 10,
y: 20,
};
for (var name in Iterator(a, true)) {
console.log(name); // x
// y
}
传入 Generator 实例
function* f() {
yield 'a';
yield 'b';
}
var g = f();
console.log(g == Iterator(g)); // true
for (var v in Iterator(g)) {
console.log(v); // a
// b
}
传入 Iterator 实例
var a = {
x: 10,
y: 20,
};
var i = Iterator(a);
console.log(i == Iterator(i)); // true
规范
非标准。不是目前任何标准文档的一部分。
浏览器兼容性
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 | 未实现 | (Yes) | 未实现 | 未实现 | 未实现 |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | 未实现 | 未实现 | (Yes) | 未实现 | 未实现 | 未实现 |
相关链接
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论