【问题标题】:Get key name from the property of javascript object从 javascript 对象的属性中获取键名
【发布时间】:2017-12-08 19:44:24
【问题描述】:

如何在函数中获取键名“email”?是否有特殊的上下文变量来执行此操作?

感谢您的帮助。

var user = {
  "email": function() {
    // How can I get the name of the key (email) inside the function ?
  }
}

【问题讨论】:

  • 如果不进行硬编码,就无法真正知道函数的名称/键。
  • 是的,不幸的是匿名函数就是这样,匿名的。

标签: javascript object key


【解决方案1】:

relatively new feature of JS 将根据最初分配给它的变量或属性为匿名函数表达式分配一个名称。

您可以通过arguments.callee.name访问函数名称

var bar = {
  baz: function() {
    console.log(arguments.callee.name);
  }
}

bar.baz();

当然,如果你把函数复制到别处,它不会得到新的名字。该名称是在创建时为其指定的。

var bar = {
  baz: function() {
    console.log(arguments.callee.name);
  }
}

bar.foo = bar.baz;

bar.foo();

【讨论】:

  • 感谢您的提示,但对于 arguments.callee.name,它已被弃用。
【解决方案2】:

我将通过提问来回答这个问题。考虑这种情况:

let myFunc = function(){ /* somehow returns the name */ };

let a = {
    funcA: myFunc
};

let b = {
    funcB: myFunc
};

现在,考虑一下:

a.funcA();
b.funcB();

他们应该返回什么? myFuncfuncA 还是 funcB?答案是“没有意义”。

这就是为什么您尝试做的事情是不可能的。该函数可以由不同的对象“拥有”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-04
    • 1970-01-01
    • 1970-01-01
    • 2014-10-15
    • 2021-06-30
    • 2016-09-27
    相关资源
    最近更新 更多