Javascript 自定义数组函数不接受参数

Javascript 自定义数组函数不接受参数,javascript,arrays,prototype,Javascript,Arrays,Prototype,我正在调试代码,并查看在调用erase()时,Entite和_deferredKill数组是否正确填充。问题是参数“item”未定义,即使我看到参数“gGameEngine.\u deferredKill[I]”正在传入。为什么它不接受我传递的被杀实体?我用的是约翰·雷斯格 //In GameEngine.js GameEngineClass = Class.extend({ entities: [], _deferredKill: [], .........

我正在调试代码,并查看在调用erase()时,Entite和_deferredKill数组是否正确填充。问题是参数“item”未定义,即使我看到参数“gGameEngine.\u deferredKill[I]”正在传入。为什么它不接受我传递的被杀实体?我用的是约翰·雷斯格

//In GameEngine.js
GameEngineClass = Class.extend({

    entities: [],
    _deferredKill: [],

    .........

    for (var k = 0; k < gGameEngine._deferredKill.length; k++){
        gGameEngine.entities.erase(gGameEngine._deferredKill[i]);
    }
}
gGameEngine = new GameEngineClass();

//in core.js, GameEngineClass is extended from this.  
Array.prototype.erase = function(item) {
for (var i = this.length; i--; i) {
    if (this[i] === item) this.splice(i, 1);
}
    return this;
};
//在GameEngine.js中
GameEngineClass=Class.extend({
实体:[],
_延迟终止:[],
.........
对于(var k=0;k
在访问数组索引时使用变量
i
。此变量不存在,因此作为参数传递的
项的值也因此
未定义


你应该用
ggamengine.\u deferredKill[i]
替换为
ggamengine.\u deferredKill[k]
,以匹配你的循环。

谢谢!我在上一个循环中使用了“i”,对它超出范围的事实视而不见。