【问题标题】:JS Symbol as object keyJS 符号作为对象键
【发布时间】:2021-07-10 00:12:54
【问题描述】:

我正在运行一个节点软件,在该软件的某个上下文中,有一个对象,其中一个键是符号,它的值是一个对象。例如:

object = {Symbol(symbol_name): another_object}

我正在尝试获取“another_object”键和值,但找不到这样做的方法。有人建议吗?

【问题讨论】:

  • 使用计算的属性键
  • 嗨,Bergi,这是什么意思?

标签: javascript symbols


【解决方案1】:

像这样将对象键放在括号中:

object = {[Symbol(symbol_name)]: another_object}

【讨论】:

  • 嗨 Jannis,我尝试了以下方法:让 a = object[Symbol('JEST_STATE_SYMBOL')] and 'a' is undefined :/
  • 是的,这只适用于对象文字表示法。要解决这个问题,您可以执行以下操作: let a = { ...object, [Symbol('JEST_STATE_SYMBOL')]: value };
【解决方案2】:

最好的方法是先将 Symbol 保存在一个变量中,然后使用括号符号来查找它:

const sym = Symbol('symbol_name');
const object = {[sym]: { foo: 'bar' }}

console.log(object[sym]);

如果你没有对符号的引用,并且对象只包含一个符号,你可以用getOwnPropertySymbols得到它:

const object = {
  [Symbol('symbol_name')]: {
    foo: 'bar'
  }
};

const sym = Object.getOwnPropertySymbols(object)[0];
console.log(object[sym]);

【讨论】:

  • 非常感谢CertainPerformance,它成功了!
猜你喜欢
  • 1970-01-01
  • 2020-03-25
  • 2019-05-28
  • 2021-08-06
  • 2023-02-09
  • 1970-01-01
  • 1970-01-01
  • 2019-05-28
  • 2013-08-29
相关资源
最近更新 更多