我在谷歌地圖工作,並有三個+瓷磚疊加創建。一個例子:Javascript:從字符串初始化一個變量?
瓷磚覆蓋
var parkingOptions = { //Parking Overlay
getTileUrl: function(coord, zoom) {
return "/maps/tiles/tilesparking/" + zoom + "_" + coord.x + "_" + coord.y + ".png";
},
tileSize: new google.maps.Size(256, 256)
};
var parkingMapType = new google.maps.ImageMapType(parkingOptions);
然而,爲了避免404錯誤通過我的映射範圍之外丟失磚,我的代碼是一個小更復雜的;因此,我打算做一個循環,其中分配給每個覆蓋(這裏作爲「停車」)的特定關鍵字將被插入到上述代碼中。因此:
For循環
var tileNames = ["base", "parking", "access"];
for (var i = 0; i < tileNames.length; i++) {
//insert Tile Overlay code here
};
不過,我有一個特別的問題:我不能找到一種方法,從tileNames陣列採取串並在瓷磚初始化兩個變量使用它們覆蓋代碼。理想情況下,我想實現這樣的事情:
嘗試1
var tileNames[1] + "Options" = { //ideally: var parkingOptions = {
//insert remaining code
};
然而,這是不行的,我也沒有真的指望它。無論是將要創建的滿弦,並試圖將其插入到初始化:
嘗試2
var newOptions = tileNames[1] + "Options";
var newOptions = {
//insert remaining code
};
因此,有沒有辦法做到的地方字符串到變量初始化?
注:我已經包括了我自己的替代解決方案的問題,因爲答案。它應該能夠工作,但是它會銷燬變量的名稱並用一個不起眼的數組變量替換它。我最好希望保留一個描述性變量名稱,因爲它們通常用於在生成的代碼中添加和隱藏疊加層。
解決方案對於這個問題,反正...
var tileNames = ["beloit", "parking", "access"];
var mapType = {};
for (var i = 0; i < tileNames.length; i++) {
var tileOptions = {
getTileUrl: function(coord, zoom) {
return "/maps/tiles/tiles" + tileNames[i] + "/" + zoom + "_" + coord.x + "_" + coord.y + ".png";
},
tileSize: new google.maps.Size(256, 256)
};
mapType[tileNames[i]] = new google.maps.ImageMapType(tileOptions);
};
拼圖的另一部分,在給getTileUrl功能的 「tileNames [I]」 是不確定的,因爲函數要它在執行時不是將名稱字符串放入函數中;然而,這是一個新的問題在這裏找到:Javascript: Making a variable static when defining a function in a loop?
那些是關聯數組,或一些符號的種類?我的印象是,Javascript沒有明確支持關聯數組:[link](http://www.hunlock.com/blogs/Mastering_Javascript_Arrays) –
這是一個對象(關聯數組是對象),object.a == object ['a'] – cuzzea