【发布时间】:2016-07-19 23:41:03
【问题描述】:
假设我在地图上有一个图块。
function TileData (image, z) {
this.image = image;
this.z = z;
}
var tile = new TileData (tileimage, 0);
现在我可以调用 tile.image 和 tile.z 来引用现有数据。
我还有一个名为 map 的数组,我可以循环遍历它来绘制地图。
var map = [];
我想要做的是将现有图块的方法附加到数组中的第 0 个条目,以便在调用函数时绘制它。
所以我尝试做这样的事情。
map[0] = tile;
所以我可以调用 map[0].image 来获取代表地图上该图块的图像。
现在我想更改此图块的图像,所以我尝试这样做。
map[0].image = differentTileImage;
然而 Javascript 的实际作用是这样的:
tile.image = differentTileImage;
这意味着每当我尝试将该图块用于地图的另一部分时,它将具有不同的值。
map[1] = tile;
//map[1].image will return differentTileImage instead of tileimage.
有没有办法让变量继承现有原型的属性和值,而不仅仅是引用它?
(对不起,如果这是一个骗局)。
【问题讨论】:
-
这里的简单解决方案似乎是
map[0] = new TileData(differentTileImage, map[0].z),尽管我可以看到随着TileData构造函数的复杂性增加,这变得更加困难。
标签: javascript variables inheritance methods