Reflect.definePorperty注意事项:枚举被忽略

172 阅读1分钟

今天遇到Reflect.definePorperty()的方法去给一个对象,添加新的属性,然后发现,for...in,Object.keys()都遍历不到这个新增属性。 console出来的这个属性,是灰色的。 原因:在添加新的属性的时候,enumerable默认是false了, 解决方法,在第三个参数,将enumerable设置为true即可,表示是否可枚举:

Reflect.defineProperty(target,'name',
    {
      value: value,
      enumerable: true,
    }
);
tips:
    这是在新增Reflect.defineProperty()新增属性的时候,
    configurable, enumerable, writable特性的默认值都是false,
    如果,在最初的时候,已经为该属性赋值了,则,
    configurable、enumerable和writable都已经是true