我正在努力制作一个非常 非常简单的 台球游戏来练习JQuery OOP。我开始了;我有这段代码:
for
但是,我不想通过球创建一个对象球,所以我尝试使用for(var $i = 1; $i <= 15; $i++){
ball+$i = new createBall($i, $color[i]);
}
;像这样的东西:
ball+$i
显然,我无法使用“ball1.color = 'red'...
”命名新对象。我正在尝试实现这个'因为我想稍后使用“$ballArray[] = new Array;
for(var $i = 1; $i <= 15; $i++){
$ballArray[$i] = new createBall($i, $color[i]);
}
”并更改对象属性等等。
现在的工作方式是这段代码:
$ballArray[1].color
如果我致电"yellow"
,它会返回$ballArray[1]
,应该是;但我不确定“createBall()
”是否实际上是对象名称,或者每当我调用'此对象属性并生成一个新属性时,它是否调用left join
函数。这可能会产生大量的物体,这就是NOPE。我做得对吗?或者还有另一种正确的方法吗?
最后,我只想创建并命名所有球对象,而不是逐个进行,以防我以后需要创建100个对象。
希望我已经正确解释了。 欢迎提出所有建议:)
答案 0 :(得分:4)
我不确定
$ballArray[1]
是否实际上是对象名称,或者每次我调用'此对象属性并生成新对象时调用createBall()函数。
$ballArray
变量包含一个数组,其中包含createBall()
构造函数返回的值。因此,您的代码很好,因为每次迭代循环只创建一个对象实例。
但是,我建议使用一些修改来提高代码质量。
$
用作保存jQuery对象的变量的前缀,因此在您的示例中不适用,因为您根本不使用任何jQuery逻辑Ball
,因为它描述了对象是什么。 createBall
更像是一个方法名称,因为它是一个描述逻辑功能的动词。[]
push()
将新项目添加到最后位置的数组中。0
开始,因此大概你的for
循环也应该
function Ball(number, color) {
this.number = number;
this.color = color;
}
var ballArray = [];
var colors = ["noColor", "yellow", "blue", "red", "purple", "orange", "green"];
for (var i = 0; i <= 15; i++) {
ballArray.push(new Ball(i, colors[i % colors.length]));
}
console.log(ballArray);