Javascript 行为不端的数组

Javascript 行为不端的数组,javascript,arrays,Javascript,Arrays,我有一门课,看起来像这样: function MyClass() { this.array1 = []; this.array2 = []; this.add_item = function( i_x, i_y, i_item ) { var pos = { "x" : i_x, "y" : i_y, "data" : i_item }; this.array1.push( pos ); this.array2.pu

我有一门课,看起来像这样:

function MyClass()
{
    this.array1 = [];
    this.array2 = [];
    this.add_item = function( i_x, i_y, i_item )
    {
        var pos = { "x" : i_x, "y" : i_y, "data" : i_item };
        this.array1.push( pos );
        this.array2.push( pos );
    }
    return this;
}
发生的情况是,当我在add_item方法的第二行(this.array1.push行)放置断点时,array1和array2都已经有pos项了!当我向前走一步时,两个阵列都会再次接收pos项目


不太可能的答案是这是Firefox中的一个bug。我在早些时候尝试过将方法原型化为对象,但后来读到这可能会导致for-each循环出现问题。这可能是什么原因造成的?旧的密码还在里面蹦蹦跳跳吗?我需要一个线索。我已经删除了所有的数组和对象原型代码。我重新启动了firefox。没什么帮助。有什么想法吗?

原来问题出在firebug调试器上。它没有显示实际阵列。我不确定它显示了什么,但我实现了自己的对象打印方法(处理循环对象引用),结果证明数组是正确的


phew认为我在那里发疯了一段时间。

原来问题出在firebug调试器上。它没有显示实际阵列。我不确定它显示了什么,但我实现了自己的对象打印方法(处理循环对象引用),结果证明数组是正确的


phew认为我在那里发疯了一段时间。

经验告诉我,如果我认为缺陷存在于编程语言或浏览器(在本例中),那么缺陷很可能存在于我的代码中。你能在
MyClass
的对象被实例化的地方发布代码吗?如何调用
add\u item
方法?这当然也是我的经验(这就是为什么我说这不太可能是问题的原因)。不过,事实证明,这只虫子是在Firebug中发现的。无法在变量查看器中正确打印数组。使用我自己的函数打印数组表明它包含正确的条目。经验告诉我,如果我认为错误存在于编程语言或浏览器(在本例中),那么错误很可能存在于我的代码中。你能在
MyClass
的对象被实例化的地方发布代码吗?如何调用
add\u item
方法?这当然也是我的经验(这就是为什么我说这不太可能是问题的原因)。不过,事实证明,这只虫子是在Firebug中发现的。无法在变量查看器中正确打印数组。使用我自己的函数打印数组表明它包含正确的条目。