从对象复制符号属性

时间:2019-07-16 06:33:20

标签: javascript node.js symbols

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]);
}

但该列表也为空。

1 个答案:

答案 0 :(得分:3)

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

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

const keys = Reflect.ownKeys(c);

等效于

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

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

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