为什么 array.push() 在循环对象时不起作用?

Why doesn't array.push() work when looping object?

我正在用 JavaScript 做一个简单的数独求解器,向数组添加新值时出现问题。我的脚本在 for..in 循环中生成随机长度数组。我用 Chrome 调试器测试了这个脚本,我看到它循环了正确的次数。我是否错过了 JS 对象的一些重要点,或者是 .push() 做这种事情的错误方法?

this.areaSize = gridSideSize * gridSideSize;

//On progress -data structures
this.structures = 
{ 
    rows: new Array(),
    columns: new Array(),
    parents: new Array()
};

//Fill the data structures with the area object
for(var struct in this.structures)
{
    for(var a = 0; a < this.areaSize; a++)
    {
        var tmp = new PartialArea(this.areaSize);
        this.structures[struct].push(tmp);
    }
    console.log(struct.length);
}

控制台告诉我,第一个数组有 4 个项目,第二个和第三个有 7 个项目。

struct属性 names rows(这是一个长度为 string 4), columns (7) 和 parents (7).

记录 this.structures[struct].length 会给出预期的结果。