代码之家  ›  专栏  ›  技术社区  ›  Alexander Mills

从对象复制符号属性

  •  0
  • Alexander Mills  · 技术社区  · 7 年前
    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 回复  |  直到 7 年前
        1
  •  3
  •   Krzysztof Krzeszewski    7 年前

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

    let c = {
      [Symbol("a")]: true
    }
    
    const keys = Reflect.ownKeys(c);
    

    相当于

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

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

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