【问题标题】:object name as string对象名称为字符串
【发布时间】:2011-03-14 19:36:24
【问题描述】:

在 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);
})

【问题讨论】:

  • 不是对象名。它是变量的名称。多个变量可以引用同一个对象。
  • 您为什么不围绕您想要完成的目标提出一个问题?
  • 你需要这个做什么?
  • @justkt 您所指的问题没有用。该问题的 OP 决定改用对象文字,因此该问题在技术上没有答案。
  • @Sime - 现在问题已被编辑,我同意存在显着差异。以前不太明显。

标签: jquery string object


【解决方案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/

【讨论】:

  • 我已将问题更新为更相关,可以从新问题中完成吗?
  • 太棒了!我真的应该知道的。我以为它是一个整数迭代器,但它是一个键,不是吗。非常感谢!
【解决方案2】:

您可以使用 window["myObj"] ,尽管它仅适用于全局变量。

【讨论】:

    【解决方案3】:

    你最好解释一下你为什么需要这个,以便我们可以提供更好的帮助,但你可以这样做:

    var myVars = {
        "myVar1": "Yaay",
        "myVar2": "Yaay again"
    };
    
    for(var a in myVars){
        alert("Variable name: "+a);
    }
    

    【讨论】:

      猜你喜欢
      • 2013-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-28
      • 1970-01-01
      • 1970-01-01
      • 2016-01-16
      相关资源
      最近更新 更多