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 メソッドの 2 行目 (this.array1.push 行) にブレークポイントを配置すると、array1 と array2 の両方に既に pos アイテムが含まれています。一歩進むと、両方の配列が再び pos アイテムを受け取ります!

ありそうもない答えは、これが Firefox のバグだということです。私は少し前に、メソッドのプロトタイピングを Object で実験しましたが、それが for-each-loops で問題を引き起こす可能性があることを読みました。何が原因でしょうか? 古いコードはまだそこに跳ね回っていますか? 手がかりが必要です。私が持っていたすべての配列とオブジェクトのプロトタイプ コードを削除しました。ファイアフォックスを再起動しました。何も役に立ちません。何か案は?

4

1 に答える 1

0

問題はfirebugデバッガーにあることがわかりました。実際のアレイは表示されていませんでした。何が表示されているかはわかりませんが、独自のobject-printing-method(循環オブジェクト参照を処理する)を実装したところ、配列が正しいことがわかりました。

ふーは私がしばらくそこに夢中になっていると思った。

于 2012-07-05T07:36:37.910 に答える