【发布时间】:2016-02-24 14:24:56
【问题描述】:
var Iterator = function(arr){ return {
index : -1,
hasNext : function(){ return this.index <= arr.length; },
hasPrevious: function(){ return this.index > 0; },
current: function(){ return arr[ this["index"] ]; },
next : function(){
if(this.hasNext()){
this.index = this.index + 1;
return this.current();
}
return false;
},
previous : function(){
if(this.hasPrevious()){
this.index = this.index - 1
return this.current();
}
return false;
}
}
};
var iter = Iterator([1,2,3]);
我想通过添加动态值来重写这个功能
added : function(data){
arr.push(data);
this.index++
}
iter.added(1);
iter.added(6);
iter.added(7);
iter.added(8);
怎么做? 我知道 ES 6 https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Iterator 中的迭代器,但我想要支持 IE
【问题讨论】:
-
从
added中删除this.index++即可。或者不是吗?为什么不呢? -
好的.....但是我想在添加时更改当前索引
-
好吧,这出乎我的意料,但去吧。现在你的问题是什么?
-
您是否尝试在 python 中实现类似于
.send的next(value)? -
顺便说一句,
hasNext方法给出了错误的结果
标签: javascript