Javascript对象丢失属性

时间:2015-07-14 11:57:41

标签: javascript

我对此功能有点问题:

function create_enemies(rows, columns) {
    var i, j;

    var x_position = 0;
    var y_position = 0;
    var id = 0;

    enemies_array = new Array(rows);

    for (i = rows - 1; i >= 0; i--) {
        enemies_array[i] = new Array(columns);
        for (j = columns - 1; j >= 0; j--) {
            x_position = j * (enemy_squadron_width / 4) + (ship_width / 2);
            y_position = i * (enemy_squadron_height / 4);

            enemies_array[i, j] = {
                x : x_position,
                y : y_position,
                width : ship_width,
                height : ship_height,
                speed : 2,
                id : id
            };

            id++;
            console.log("this one's fine: " + enemies_array[i, j].y);
        }
    }

    for (i = rows - 1; i >= 0; i--) {
        for (j = columns - 1; j >= 0; j--) {
            console.log("This one's not fine:  " + enemies_array[i, j].y);
        }
    }
}

正在发生的事情是,在第一个console.log上,正确打印了Y属性,但是在第二个console.log中,数组的每个元素中的每个Y都被设置为0.不知何故,Y属性在两者之间丢失。第一个外部for-loop和第二个。

我肯定错过了一些非常明显的东西,并开始感到有些疯狂。

有什么想法吗?

非常感谢你。

编辑 - 我应该提到其他所有属性都没问题。只有Y被重置

1 个答案:

答案 0 :(得分:1)

你走了:

function create_enemies(rows, columns) {

    var x_position = 0;
    var y_position = 0;
    var enemy_squadron_width = 100;
    var enemy_squadron_height = 100;
    var ship_width = 100;
    var ship_height = 100;


    var id = 0;

    var enemies_array = new Array(rows);

    for (var i = rows - 1; i >= 0; i--) {
        enemies_array[i] = new Array(columns);
        for (var j = columns - 1; j >= 0; j--) {
            var x_position = j * (enemy_squadron_width / 4) + (ship_width / 2);
            var y_position = i * (enemy_squadron_height / 4);
            enemies_array[i][j] = {
                x : x_position,
                y : y_position,
                width : ship_width,
                height : ship_height,
                speed : 2,
                id : id
            };

            id++;
            console.log("this one's fine: " + enemies_array[i][j].y);
        }
    }

    for (var i = rows - 1; i >= 0; i--) {
        for (var j = columns - 1; j >= 0; j--) {
            console.log("This one's not fine:  " + enemies_array[i][j].y);
        }
    }
}

create_enemies(10,10);

您需要通过[i] [j]来访问数组的元素。

小提琴:http://jsfiddle.net/bL4mwgez/1/