1.for … in 循环遍历对象自身的和继承的可枚举属性(循环遍历对象自身的和继承的可枚举属性(不含Symbol属性).).
for(let i in obj) // i 指的是对象键值对中的key
2.使用Object.keys() Object.values()遍历 (返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含Symbol属性).).
Object.keys(obj) // 返回 键值对中 key的数组
Object.values(obj) // 返回 键值对中 value的数组
3.Object.getOwnPropertyNames(obj),返回一个数组,包含对象自身的所有属性(不含Symbol属性,但是包括不可枚举属性).
Object.getOwnPropertyNames(obj) // 返回 key的数组 value = obj[key]
4.使用Reflect.ownKeys(obj)遍历,返回一个数组,包含对象自身的所有属性,不管属性名是Symbol或字符串,也不管是否可枚举.
Reflect.ownKeys(obj) // 返回 key的数组 value = obj[key]