当我尝试将对象推入数组时,它可以正常工作。我在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;时)这四个值。当我这样做时,说是预期的,游戏不会加载。
答案 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;)。