for in, Object.keys(), Object.getOwnPropertyNames()的区别
这三种是遍历对象属性的常用方法,相信大家在平常写代码都经常使用,这里具体说一下三种的区别
var person = {
name: 'lifuya',
age: 22,
}
var user = Object.create(person, {
height: {
value: 173,
writable: true,
enumerable: true, //可枚举
configurable: false,
},
weight: {
value: 73,
writable: true,
enumerable: false, //不可枚举
configurable: false,
},
})
先实例化一个对象user,赋给他除了继承于Person的属性外的height和weight属性,分别用三种不同的方法查看输出结果
for(let i in user){
console.log(i) //height name age
}
for in 会遍历出所有的可枚举属性,包括原型属性
console.log(Object.keys(user))
// height
Object.keys()会遍历出自身的可枚举属性
Object.getOwnPropertyNames(user)
// height weight
Object.getOwnPropertyNames()会遍历出自身的所有属性