or in 、Object.keys()以及Object.getOwnPropertyNames有什么区别?

or in 、Object.keys()以及Object.getOwnPropertyNames的区别

var obj= Object.create(parent, {
b: {
value: 2,
writable: true,
enumerable: true,
configurable: true
},
c: {
value: 3,
writable: true,
enumerable: false,
configurable: true
}
});
obj.__proto__ = {age:123};

1、 for in 遍历对象,会将对象自身的属性以及原型上继承的属性都打印出来,但是不会获取不可枚举的属性。

for(let key in obj){
console.log(key) // =>b ,age
}

  

2、Object.keys()遍历对象,获取对象自身可枚举属性。

var arr = Object.keys(obj);
console.log(arr) => ['b']

3、Object.getOwnPropertyNames()遍历对象,获取所有自身属性,包括不可枚举的属性。

var arr = Object.getOwnPropertyNames(obj);
console.log(arr) => ['b','c']

  

 

posted @ 2019-01-08 00:57  Mahmud(مەھمۇد)  阅读(213)  评论(0编辑  收藏  举报