【问题标题】:Copy symbol properties from object从对象复制符号属性
【发布时间】:2019-11-24 20:06:12
【问题描述】:
const c = {};
const s = Symbol()
c[s] = true;

如何查看 c 的属性,包括符号属性?如果我这样做:

for(const [k,v] of Object.entries(c)){
  console.log(k,v);
}

默认情况下不会获得我的不可枚举属性(如符号)?我试过这个:

for(const k of Object.getOwnPropertyNames(c)){
  console.log(k,c[k]);
}

但该列表也是空的。

【问题讨论】:

  • 啊有趣,是的 Object.getOwnPropertyNames(c) 也没有工作,因为我刚刚更新了 OP
  • 不知道有没有办法一次性枚举所有内容,否则我必须循环2x。

标签: javascript node.js symbols


【解决方案1】:

您可以使用稍微不同的方式访问它们:

let c = {
  [Symbol("a")]: true
}

const keys = Reflect.ownKeys(c);

相当于

const keys = Object.getOwnPropertyNames(c).concat(Object.getOwnPropertySymbols(c))

Object.getOwnPropertyNames() 方法返回直接在给定对象上找到的所有属性(可枚举或不可枚举)的数组。

Object.getOwnPropertySymbols() 方法返回一个包含直接在给定对象上找到的所有符号属性的数组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-13
    • 2011-12-24
    相关资源
    最近更新 更多