一、通用对象迭代方法
- for…in:返回迭代对象的可枚举字符串属性,包括原型上的属性;
- for…of:返回可迭代对象定义的要进行迭代的值。根据对象上实现的 @@iterator 方法决定枚举行为的返回值;
- Object.keys():返回对象自身的可枚举的字符串属性名组成的数组,不包括使用 symbol 值作为名称的属性,不包括原型上的属性;
- Object.getOwnPropertyNames():返回给定对象中所有自有属性的数组。(包括不可枚举属性,但不包括使用 symbol 值作为名称的属性,不包括原型链上的属性)
- Object.getOwnPropertySymbols():包含给定对象所有自有 Symbol 属性的数组。不包括原型链上的。
- Object.values() :返回给定对象的自有可枚举字符串键属性值组成的数组。不包括原型链上的,不包括 Symbol,不包括不可枚举。
- Object.hasOwn():如果指定的对象自身有指定的属性(包括 Symbol 属性),则返回 true。如果属性是继承的(不包括原型上的)或者不存在,该方法返回 false。
- Object.hasOwnProperty():该方法返回一个布尔值,表示对象**自有属性(而不是继承来的属性)**中是否具有指定的属性。
- Object.entries():返回给定对象自有的可枚举字符串键属性的键值对,不包括原型链上的,不包括 Symbol 属性,不包括不可枚举的。
- Reflect.ownKeys():返回对象自身的所有属性,等同于Object.getOwnPropertyNames与Object.getOwnPropertySymbols之和,包括不可枚举属性、不包括原型上的属性。