我正在尝试模仿 setInterval:
var Animator=new (function(){
var jobs={
interval:{}
}
var self=this;
var assignedIntervalNum=0;
this.setInterval=function(func,interval){
jobs.interval[assignedIntervalNum]={
func:func,
latest:Date.now()-interval,
interval:interval
};
assignedIntervalNum++;
return assignedIntervalNum-1;
}
this.clearInterval=function(key){
delete jobs.interval[key];
}
var requestNextFrame=function(){
var now=Date.now();
for (var key in jobs.interval){
if (jobs.interval[key].latest + jobs.interval[key].interval < now){
jobs.interval[key].func();
jobs.interval[key].latest=now;
}
}
setTimeout(function(){requestNextFrame();},1);
}
requestNextFrame();
})();
但我不断收到一个错误,指出 jobs.interval[key] 未定义。所以我猜删除并没有完全删除该属性,而只是将其分配给undefined
!?
对于支持删除对并循环遍历每个对的键/值存储,我有哪些选择?
编辑
我的错!
在函数 func() 中调用了 clearInterval,因此导致错误的行是 jobs.interval[key].latest=now; 就在它被删除之后。
所以,是的,javascript 对象仍然是键/值存储的好选择,支持删除对并循环遍历它们