【问题标题】:Javascript: Get object name as stringJavascript:以字符串形式获取对象名称
【发布时间】:2015-05-27 19:01:04
【问题描述】:

假设我有这个代码...

var personA = {
    name: "john"
}

var personB = {
    name: "john"
}

function doSomething(o) {
    alert("Var is: " + o.toString()); // I need to convert 'o' to the object name
}

doSomething(personA);
doSomething(personB);

我希望警报输出为...

Var is: personA
Var is: personB

但我不知道如何将名称作为对象的字符串?

【问题讨论】:

  • 你真的想要personA/personB 在输出中吗? 变量的名称?有人告诉我这是一个 X/Y 问题——您之所以询问 Y,是因为您认为需要 Y 来解决问题 X,但很可能有比上述方法更好的方法来解决问题 X。
  • dosomething(personA.name.toString());
  • stackoverflow.com/a/22548989/4028085 如果您将对象的“变量”属性设为...,您可以这样做
  • 为什么?你想通过获取变量名来解决什么问题?听起来像XY problem
  • @MojoDK 查看我的答案我不确定这是否是您正在寻找的,但它可以替代您的问题。

标签: javascript


【解决方案1】:

你可以做一些类似的事情

var global = {};
Object.observe(global, function(obj) {
 console.log(obj[0].name);
});
global.personA = { name: "John" };

EC7 observe

【讨论】:

    【解决方案2】:
    var people = {
        personA: {name: "john"},
        personB: {name: "billy"}
    };
    
    for(var variable in people)
    {
        alert(variable);
    }
    

    代码来自here

    【讨论】:

      【解决方案3】:

      基本上不可以

      一个 hacky 的方式就是这样做

      var personA = {
          name: "John",
          variable: "personA"
      }
      

      然后只需使用o.variable

      【讨论】:

        【解决方案4】:

        这是不可能的。没有返回到变量的连接。

        当您doSomething(personA); 时,您将获得变量personA,并将该 传递给函数。

        function doSomething(o) {
        

        值被复制到o。没有从那里返回personA 的路径。

        【讨论】:

        • 尽管在这种特殊情况下,如果您可以访问变量,并且每个对象只有一个变量引用,您可以弄清楚...但这显然是 X/Y 情况。
        猜你喜欢
        • 2012-11-16
        • 2011-09-30
        • 2014-05-23
        • 2011-08-04
        • 1970-01-01
        • 2010-09-15
        相关资源
        最近更新 更多