对象获取 keys 集合以及区别

javaScript

对象 keys 获取的方式很多,整理下它们之间的区别是什么。

获取对象 kes 名称
  • Object.getOwnPropertyNames: 获取对象本身的实例属性,旧写法
  • Reflect.ownKeys: 获取对象本身属性 + symbols
  • Object.keys: 获取对象本身的实例属性
  • Object.getOwnPropertySymbols: 获取对象本身的 symbols 属性
  • for…in: 能获取原型对象上的属性
获取某个对象属性的描述
  • Object.getOwnPropertyDescriptors(obj) 指定对象所有自身属性(非继承属性)

  • Object.getOwnPropertyDescriptor(obj, keys) 单个属性

  • Object.getPrototypeOf: 获取实例化对象上的原型对象,通过 class 定义的实例化对象则无法获取到

  • Object.setPrototypeOf: 设置一个对象的prototype对象,返回参数对象本身