Can';“t”的访问属性;2d";通过平铺[i-1]创建对象,就像我可以创建标准对象(javascript)一样

Can';“t”的访问属性;2d";通过平铺[i-1]创建对象,就像我可以创建标准对象(javascript)一样,javascript,object,canvas,dynamic,Javascript,Object,Canvas,Dynamic,我正在尝试使用画布中的一个格子来构建一个随机贴图生成器。对于每个磁贴磁贴[i],我在使用磁贴[i-1]之前检查磁贴的属性。这似乎适用于使用“普通”对象(方法1),而不是“2d”对象(方法2),其中tiles[i-1]。tileID显示为tiles[i]。tileID for (i=0; i<40; i++) { tiles[i] = { tileID: i}; // METHOD 1 tiles[i]=c.getContext("2d") // METHOD 2 tiles[i

我正在尝试使用画布中的一个格子来构建一个随机贴图生成器。对于每个磁贴
磁贴[i]
,我在使用
磁贴[i-1]
之前检查磁贴的属性。这似乎适用于使用“普通”对象(方法1),而不是“2d”对象(方法2),其中
tiles[i-1]。tileID
显示为
tiles[i]。tileID

for (i=0; i<40; i++) {
  tiles[i] = { tileID: i}; // METHOD 1
  tiles[i]=c.getContext("2d") // METHOD 2
  tiles[i].tileID = i // METHOD 2
  if(i>0) {
    console.log("my tile ID is", tiles[i].tileID,
    ". The tile ID of the tile before me is", tiles[i-1].tileID)
  }
}
(i=0;i0)的
{
console.log(“我的磁贴ID为”,tiles[i].tileID,
“。我面前的磁贴的磁贴ID为”,tiles[i-1]。tileID)
}
}
使用方法1(并删除方法2的两行),控制台将打印您期望的内容:
我的号码是12。我面前的磁贴的磁贴ID是11

但不适用于方法2:
我的号码是12。我面前的磁贴的磁贴ID是12


在我研究变通方法之前,有没有这样做的原因(或者我应该采用的其他方法)?干杯

这是因为
c.getContext(“2d”)
总是返回相同的对象。所以当你这样做的时候:

for (i=0; i<40; i++) {
  tiles[i]=c.getContext("2d") // METHOD 2
  tiles[i].tileID = i // METHOD 2
}

这是因为
c.getContext(“2d”)
总是返回相同的对象。所以当你这样做的时候:

for (i=0; i<40; i++) {
  tiles[i]=c.getContext("2d") // METHOD 2
  tiles[i].tileID = i // METHOD 2
}