五种方法的介绍
- for in循环是最基础的遍历对象的方式,它还会得到对象原型链上的属性
- Object.keys()是ES5新增的一个对象方法,该方法返回对象自身属性名组成的数组,他会自动过滤掉原型链上的属性和不可枚举的属性,然后可以通过数组的forEach()方法来遍历。
- Object.getOwnPropertyNames()是ES5新增的一个对象方法,该方法返回对象自身属性名组成的数组,包括不可枚举的属性,也可以通过数组的forEach()方法来遍历。
4. Object.getOwnPropertySymbols()方法返回对象自身的 Symbol 属性组成的数组,不包括字符串属性
5. Reflect.ownKeys()方法是 ES5 新增的静态方法,该方法返回对象自身所有属性名组成的数组,包括不可枚举的属性和 Symbol 属性
代码效果演示
function Obj(name, sex) {
this.name=name,
this.sex=sex
}
Obj.prototype.age = 18
Obj.prototype.behavior = function() {
console.log('学习')
}
const obj1 = new Obj('zs', '男')
for (const key in obj1) {
console.log('forin', key)
}
Object.keys(obj1).forEach((item) => {
console.log('obj.key', item)
})
Object.getOwnPropertyNames(obj1).forEach((item) => {
console.log('obj.getOwnPropertyNames', item)
})

三种方法的对比
