一般来说,对象的属性遍历有三种方法,
1 for ... in
最简单的了,for(item in obj)
2 Object.keys
返回一个对象属性的数组
eg:
const obj = {
name:'cc',
age:33
}
const valueList= Object.keys(obj)
//[name,age]
3 Object.getOwnpropertyNames
和上面的一样都是返回一个数组
总结:
- for…in 遍历的是对象的可枚举属性,包括原型
- Object.keys 遍历的是对象可枚举属性,不包括原型
- Object.getOwnPropertNames 遍历的是对象的所有属性,不包括原型
function Students(name) {
this.name = name;
this.run = function () {
console.log(this.name + 'is running')
}
}
Students.prototype.score = 100
Students.prototype.learning = function () {
console.log(this.name +'wode'+'hahahdf')
}
var newPeople = new Students('chenfei')
// newPeople.run()
Object.defineProperty(newPeople,'name',{
enumerable:false,
value:'heihei'
})
const getOwn = Object.getOwnPropertyNames(newPeople)
console.log(getOwn)
const valueList= Object.keys(newPeople)
console.log(valueList)
for(item in newPeople){
console.log(item)
}