前两种比较常用,其他的花里胡哨的俺记不住
- for…in
返回对象自身的和继承的可枚举属性(不含Symbol属性)
let person = {
id:1,
name:"ALi",
age:17
};
for(let key in person){
console.log(key + '---' + person[key])
}
// 输出
// id---1
// name---ALi
// age---17
- Object.keys() 和 Object.values()
返回值:一个表示给定对象的所有可枚举属性的字符串数组(不含Symbol属性)
返回值:一个给定对象自己的所有可枚举属性值的数组(不含Symbol属性)
举个栗子:
Tip:可以使用 Object.keys() 判断是否为空对象,返回 [] 即为空对象 - 使用Object.getOwnPropertyNames()
返回一个数组,包含对象自身的所有属性(不含Symbol属性,包括不可枚举属性)
const obj = {};
Object.defineProperties(obj, {
property1: {enumerable: true, value: 1},
property2: {enumerable: false, value: 2},
});
console.log(Object.keys(obj));
console.log(Object.getOwnPropertyNames(obj));
// 输出
// ["property1"]
// ["property1", "property2"]
- Reflect.ownKeys()
返回一个数组,包含对象自身的所有属性,不管属性名是Symbol或字符串,也不管是否可枚举