es5中的
for …in
循环遍历对象自身和继承的可枚举属性(不含Symbol属性)var obj = { a: 1, b: 2 } for(key in obj) { if (obj.hasOwnProperty(key)) { //此种方式会遍历出对象原型链上的属性,需要判断 } }
Object.keys,Object.values,Object.entries
循环遍历对象自身的可枚举属性Object.getOwnPropertyNames
遍历对象自身的所有属性(包含可枚举和不可枚举属性,不包含Symbol属性)Object.getOwnPropertySymbols
遍历对象的所有Symbol属性Reflect.ownKeys
返回一个数组,包含对象自身的所有键名,不管键名是 Symbol 或字符串,也不管是否可枚举。