在for循环(OOP)中创建和命名'n'JQuery对象

时间:2017-03-21 22:05:55

标签: jquery loops oop object

我正在努力制作一个非常 非常简单的 台球游戏来练习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个对象。

希望我已经正确解释了。 欢迎提出所有建议:)

1 个答案:

答案 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);