我想将精灵的位置封装在另一个对象中。这样我就可以通过and访问而不是使用tile.x
and 。tile.y
tile.position.x
tile.position.y
然而,一旦我tile.position
在 init-method中设置了 tile-object 的所有实例的值,所有实例都会更改为相同的值。这是为什么?
当我设置tile.x
一切按预期工作时,这意味着每个对象都获得了正确的值。
这就是我创建多个实例的方式:
在 for 循环中,我正在创建所述对象的多个实例:
for (var y = 0; y < 10; ++y) {
for (var x = 0; x < 10; ++x) {
var tile = Object.create(tileProperty);
tile.init(x, y);
...
}
}
这是克隆的对象:
var tileProperty = {
// this works
x: null,
y: null,
// this will get changed for ALL instances
position: {
x: null,
y: null
},
init: function(x, y) {
this.name = x.toString() + y.toString();
this.x = x;
this.y = y;
this.position.x = x;
this.position.y = y;
this.canvas = document.createElement('canvas');
var that = this;
$(this.canvas).bind('click', function() {
console.log(that.position, that.x, that.y);
});
document.body.appendChild(this.canvas);
}
}