【问题标题】:Accessing an object name from within the object [duplicate]从对象内访问对象名称[重复]
【发布时间】:2019-05-06 14:28:53
【问题描述】:

我想知道是否有一种方法可以在对象本身中访问对象的名称。

let object = {a: {test: ()=>{ console.log(?); }}}
object.a.test() // should give me 'a'

在此示例中,我想在 console.log 调用中打印对象的名称 ('a')。

【问题讨论】:

  • 这在 JavaScript 中并不是一件真正有意义的事情。该对象(object.a 的值)与 object 的特定属性没有任何真正持久的关系;它恰好是它的价值。它可以是其他对象或变量的任意数量的其他属性的值。
  • 你已经知道它的名字,“a”,那么为什么需要以编程方式获取它呢? (我认为这是一个 XY 问题,你应该向我们展示你的实际用例)
  • 这只是一些可能有用的东西。但我想我宁愿重组我的程序,这样我就不需要这个了。

标签: javascript typescript object


【解决方案1】:

您可以使用普通函数并循环访问主父object的键并检查其值是否等于this

let object = {
  a:{
    test: function(){ 
      console.log(Object.keys(object).find(x => object[x] === this)); 
    }
  }
}
object.a.test()

【讨论】:

  • 您误用了this 关键字。它不会总是像你期望的那样工作(例如,尝试执行 (function () { object.a.test(); }()) 代替)。
  • @PedroCorso 如果object 可用,它将起作用
  • @adiga 对不起,不好的例子。但是说你想通过object.a.test作为回调:function callFunc(func) { func() }然后调用它为callFunc(object.a.test)
猜你喜欢
  • 2013-01-31
  • 1970-01-01
  • 1970-01-01
  • 2012-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-19
  • 2013-11-21
相关资源
最近更新 更多