将对象推入数组会导致对象只有一个值

时间:2016-08-19 00:52:27

标签: javascript arrays html5

当我尝试将对象推入数组时,它可以正常工作。我在for循环中使用它,因此应该将59个对象放入数组中。它确实将59个东西放入数组中,但只有第一个是对象。这是代码:

for (i = 0; i < game.Levels[LevelNum - 1].Generation[0].LengthGen; i++) {
  noise = game.Levels[LevelNum - 1].Generation[0].Noise
  var a = new Object(i * 20, 20, 20, Math.round(Math.random() * noise + 1));
  game.Levels[LevelNum - 1].Generation.push(a);
  console.log("Generated " + i)
}

以下是从页面控制台访问的输出:

[Object, Number*57]
//the times 52 is the number of "Number"'s repeated

我需要做的是让数组填充具有高度,长度,x和y坐标的对象。然后在此将用于绘制一个框。目前我使用的代码只显示其中包含1个值的对象。当我尝试分配一个密钥时(我不知道它是如何被调用的,但是当你在一个值之前放置&#34; x:&#34;时)这四个值。当我这样做时,说是预期的,游戏不会加载。

1 个答案:

答案 0 :(得分:1)

value具有原始javascript数据类型时,

var o = new Object( value)

为与其数据类型一致的值创建包装器对象。正如@RobG评论中所提到的,Object在被称为构造函数时只接受一个参数。

所以

var a = new Object(i * 20,20,20,Math.round(Math.random()* noise + 1));

创建与

相同的结果

var a = new Object(i * 20);

创建一个Number对象作为20左右的包装。当登录到控制台时,它将显示为数字,但"typeof a"仍应评估为&#34;对象&# 34;和a.constructor应评估为&#34; Number&#34; (&#34;对象&#34;)。