2011-03-14 145 views
0

有沒有什麼辦法在jQuery中獲取對象的名稱作爲字符串?作爲字符串的對象名稱

也就是說,如果我有

markers.events = { 
    click: function(event){}, 
    drag: function(event){} 
}; 

我想獲得一個字符串"click""drag"

這是可能的一個$.each(myObj, function(){})裏面?

我需要做以下(希望)的對象上面所述:

$.each(markers.events, function(i, event){ 
    google.maps.event.addListener(marker, "click/drag", event); 
}) 
+2

它是不是這個名字的對象。它是變量的名稱。有幾個變量可以引用同一個對象。 – 2011-03-14 19:38:32

+1

你爲什麼不問一個以你想要完成的事情爲中心的問題? – Pointy 2011-03-14 19:39:05

+0

你需要什麼? – Kevin 2011-03-14 19:39:43

回答

1

該對象本身沒有名稱。如果你這樣做:

var x = {}; 

那麼對象將被創建和可變x將不得不對它的引用。但是,該對象的名稱不是'x'。該對象是無名的。

甚至可以聲明另一個變量,並設置其參照該相同的對象:

var y = x; 

現在x和y包含到相同的(無名)對象的引用。

你想要的是根據其標識符名稱對變量的名稱進行字符串化。這是不能做到的。


更新:

$.each回調的第一個參數包含屬性的名稱:

$.each(markers.event, function(i, v) { 
    google.maps.event.addListener(marker, i, v); 
}); 

現場演示:http://jsfiddle.net/simevidas/SKZKv/

+0

我已經更新了這個問題,使其更加相關,可以從新問題中完成嗎? – designermonkey 2011-03-14 20:03:16

+0

@Designermonkey我已經更新了我的答案。 – 2011-03-14 20:10:21

+0

太棒了!我應該知道真的。我認爲這是一個整數迭代器,但它是一個關鍵不是它。非常感謝! – designermonkey 2011-03-14 21:45:30

0

你會很好地解釋爲什麼你需要這個,所以我們可以幫助更好的,但你可以做這樣的事情:

var myVars = { 
    "myVar1": "Yaay", 
    "myVar2": "Yaay again" 
}; 

for(var a in myVars){ 
    alert("Variable name: "+a); 
} 
1

您可以使用window["myObj"],儘管它只適用於全局變量。

相關問題