我如何声明这个Javascript变量有什么问题?

时间:2011-05-31 18:36:59

标签: javascript arrays variables object declaration

我有一个名为TruckModel的对象,我之前在我的JavaScript文件中定义了名为milktruck.js的

我正在尝试创建这些TruckModel对象的数组,因为我不知道在我的多人游戏的玩家进入和退出时,将需要多少TruckModel对象。

我知道我当前的代码无效,因为当我使用下面的teleportToThat函数时,模型不会显示。

我能够通过在index.html文件中声明一个TruckModel()对象然后使用teleportToThat来显示模型

这是我的代码,您是否看到我如何做错?

非工作版本:

 var opponentTrucks = [];

 for (var i = 0; i < markers.length; i++) {

      opponentTrucks[i] = new TruckModel();
      opponentTrucks[i].teleportToThat( lat, lng, heading );

 }

工作版:(不同之处在于我正在尝试使用不同数量的TruckModel对象)

在index.html文件中声明:

 var model;

在JavaScript文件中声明:

 model.teleportToThat( lat, lng, heading );

以下是整个JavaScript文件:

http://thehobbit2movie.com/milktruck.js

2 个答案:

答案 0 :(得分:2)

如果您希望能够通过数字索引查找对象,则需要数组,而不是普通对象:

var opponentTrucks = [];

你所拥有的将会有所作为,但如果你打算像对待它一样,没有理由不使用真正的阵列。

编辑 - 它仍然不是很清楚究竟是什么问题。这一行:

opponentTrucks[i].teleportToThat( lat, lng, heading );

该怎么办?从哪里打来的? “我”的价值是多少?如果你只是在循环之后有这个语句,那么它就不会起作用了。如果你想在数组中为中的每一个调用“teleportToThat()”函数,那么你应该将函数调用置于“for”循环中。

答案 1 :(得分:2)

如果您只使用数字键,则需要一个数组,而不是一个对象:

var opponentTrucks = [];

for (var i = 0; i < markers.length; i++) {
     opponentTrucks.push(new TruckModel());
}

这可能不会阻止您的代码实际运行,但几乎肯定会有所改进。

如果仍有错误,也许您可​​以说出它们是什么: - )