【发布时间】:2014-03-31 03:25:30
【问题描述】:
我正在阅读 Iterators and generators 上的 MDN 指南,并实现了以下示例:
function Range(low, high){
this.low = low;
this.high = high;
}
Range.prototype.__iterator__ = function(){
return new RangeIterator(this);
};
function RangeIterator(range){
this.range = range;
this.current = this.range.low;
}
RangeIterator.prototype.next = function(){
if (this.current > this.range.high)
throw StopIteration;
else
return this.current++;
};
var range = new Range(3, 5);
for (var i in range) {
console.log(i);
}
但我明白了:
low
high
__iterator__
它应该返回的地方:
3
4
5
是否可以在 Node.js 中按预期实现?
注意:我使用的是node --harmony myscript.js。
** 编辑 **
我还应该注意,我知道__iterator__ 是Mozilla-feature only。我想知道 Node.js 中的等价物是什么。或者下一个最好的事情是什么。
另外,我想不为此使用生成器,因为我希望迭代没有任何条件测试。
我的结论是唯一的等价物是
Range.prototype.each = function (cb) {
for (var i = this.low; i <= this.high; i++) {
cb(i);
}
};
//...
range.each(function (i) {
console.log(i);
});
有其他选择吗?
【问题讨论】:
标签: javascript node.js iterator