2011-03-14 98 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"],尽管它只适用于全局变量。

相关问题