首页 > 其他 > 详细

for...in 、Object.keys 、 Object.getOwnPropertyNames

时间:2019-07-19 00:10:37      阅读:76      评论:0      收藏:0      [点我收藏+]

个人总结:

1.for...in 遍历的是对象及其原型上的可枚举属性

2.Object.keys得到一个数组,是对象自身的可枚举属性,不包括原型上的可枚举属性

3.Object.getOwnPropertyNames得到一个数组,是对象自身的可枚举和不可枚举属性

 

 

 

 

function People() {
this.name = ‘Tom‘ // enumerable
this.age = 24 // enumrable
this.c = function () { // enumrable
console.log(‘1‘)
}
}

People.prototype.look = function () { // enumrable
console.log(‘look at this‘)
}


var b = new People()

// 使用Object.defineProperty为b添加一个‘sex‘的不可枚举属性
Object.defineProperty(b, ‘sex‘, {
value: ‘女‘,
// enumerable:false 在Object.defineProperty中,enumerable默认是false的
})


/**
* name,age,c是对象的普通属性(默认可枚举)
* look在对象的原型上(默认可枚举)
* sex不可枚举
*/


//一、 for in遍历对象的可枚举属性
for (var i in b) {
console.log(i)
}

console.log(‘==================‘)

//二、 Object.keys 得到一个数组,内容是自身的可枚举属性 不能包括原型上的可枚举属性
console.log(Object.keys(b))

console.log(‘==================‘)

//三、 Object.getOwnPropertyNames 得到一个数组,内容是自身的所有属性(包括可枚举 不可枚举) (不包括原型的内容)
console.log(Object.getOwnPropertyNames(b))
 
 
运行结果:
 
技术分享图片

for...in 、Object.keys 、 Object.getOwnPropertyNames

原文:https://www.cnblogs.com/eret9616/p/11209776.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!