ES6中5种遍历对象属性的方法

ES6中5种遍历对象属性的方法

5种遍历对象属性的方法:

  • for…in
    for...in循环遍历自身的和继承的可枚举属性(不含Symbol属性)

  • Object.keys(obj)
    Object.keys(obj)返回一个数组,包括对象自身的(不含继承)所有可枚举属性(不含Symbol属性)

  • Object.getOwnPropertyNames(obj)
    Object.getOwnPropertyNames(obj)返回一个数组,包括对象自身(不含继承)所有属性(包括不可枚举的属性,不含Symbol属性)

  • Object.getOwnPropertySymbols(obj)
    Object.getOwnPropertySymbols(obj)返回一个数组,包括对象自身所有的Symbol属性

  • Reflect.ownKeys(obj)
    Reflect.ownKeys(obj)返回一个数组,包含对象自身的所有属性,不管属性名是Symbol或字符串,也不管是否可枚举

###通过比较,可以得到结论:

  1. 要想获得对象自身和它所继承的属性(可枚举的),必须用for...in,其它只与对象自身有关。
  2. Object.keys(obj)返回自身的可枚举属性
  3. Object.getOwnPropertyNames(obj)Object.keys(obj)多包含了对象自身的不可枚举属性。
  4. Reflect.ownKeys(obj)的返回结果是Object.getOwnPropertyNames(obj)Object.getOwnPropertySymbols(obj)的合集。