遍历对象的属性

遍历对象的属性

1
2
3
4
5
6
7
8
9
10
var obj = Object.create({foo:0},{
bar1:{
value:1//descriptor默认值 enumerable fasle configurable false writable false
},
bar2:{
value:2,
enumerable:true
}
});
console.log(obj);//Object {bar2: 2, bar1: 1}

for in 可以遍历属性和原型属性 中可以枚举的 ,包括原型上的属性

1
2
3
for(var key in obj){
console.log(key); // bar2 foo
}

Object.keys(obj) 返回所有可以枚举的属性组成的数组,不包括原型上的属性

1
2
console.log(Object.keys(obj));//["bar2"]

Object.getOwnPropertyNames(obj) 返回可以枚举以及不可枚举的属性组成的数组,不包括原型上的属性

1
2
console.log(Object.getOwnPropertyNames(obj));//["bar1", "bar2"]

Object.assign()方法只能复制可以枚举的属性,不能复制不可枚举以及原型上的属性

1
2
console.log(Object.assign({},obj));//Object {bar2: 2}

JSON.stringify(obj) 只能将对象可枚举的属性转化

1
2
console.log(JSON.stringify(obj));//'{"bar2":2}'
console.log(typeof JSON.stringify(obj));//string