先介绍一下对象的可枚举属性和不可枚举属性
js中 ,对象的属性可分为可枚举属性和不可枚属性,是否可枚举由属性的enumerable的值决定。最简单的方法便是for in遍历出来的属性都是可枚举的属性(包括自己的属性可继承的属性)
2、 for in
遍历对象的可枚举属性,包括自有属性和继承自原型的属性
const Person= function() {
this.name = '埼玉';
};
Person.prototype.age = 19;
const perdsonOne= new Person();
Object.defineProperty(perdsonOne, 'metal', { // 定义一个新的属性 可枚举设置为false
enumerable: false,
configurable: false,
writable: false,
value: '男'
});
for (const key in perdsonOne) {
console.log(key);
}
上图可以看的出 personOne中只有name属性,但是使用for in 后我们可以遍历出其继承的age属性
2、Object.keys()
方法返回一个数组,元素均为对象自有可枚举的属性(仅仅是自己拥有的属性 没有继承的)
console.log(Object.keys(personOne))
3、Object.getOwnProperty()
方法返回一个数组,元素为对象的所有属性(包括可枚举属性和不可枚举属性)
4、Reflect.ownKeys()
这个不是很熟 自己去查吧