这个问题有个坑:假如对象的属性是通过Object.defineproperty()定义的,然后设置为不可枚举。

这种情况下:

1)Object.keys()不可以获取到不可枚举属性

2)for in 不可遍历不可枚举属性

3)JSON.stringify忽略不可枚举属性

所以上面几种都不可用,而正确的应该是用Reflect.ownKeys()这个方法,这个方法返回一个对象的key数组,且返回自身的而不包含原型链上的,且不管是不是不可枚举。

如果这个返回空数组那么就可以证明为{},当然需要首先判断是不是对象数据类型。

也可以用Object.getOwnPropertyNames(),这个返回一个数组。

相关文章:

  • 2022-12-23
  • 2021-10-28
  • 2021-06-24
  • 2022-02-17
  • 2021-10-11
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-11-27
  • 2021-11-30
  • 2021-07-25
  • 2021-05-13
  • 2022-01-04
相关资源
相似解决方案