2

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

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 中的一个错误。我早些时候在 Object 的方法中进行了原型设计,但后来读到这可能会导致 for-each-loops 出现问题。这可能是什么原因造成的?旧代码还在里面蹦蹦跳跳吗?我需要一个线索。我已经删除了我拥有的所有 Array 和 Object 原型代码。我已经重新启动了Firefox。没有什么帮助。有任何想法吗?

4

1 回答 1

0

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

以为我在那里疯了一阵子。

于 2012-07-05T07:36:37.910 回答