首页 > 解决方案 > 从对象复制符号属性

问题描述

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

但该列表也是空的。

标签: javascriptnode.jssymbols

解决方案


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

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

const keys = Reflect.ownKeys(c);

这相当于

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

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

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


推荐阅读