ES6中共有5种遍历对象属性的方法
for...in
Object.keys(obj)
Object.getOwnPropertyNames(obj)
Object.getOwnPropertySymbols(obj)
Reflect.ownKeys(obj)
var parent={};
Obj.defineProperties(parent,{
a:{
value:1,
writable:true,
enumerable:true,//可枚举
configurable:true
},
b:{
value:1,
writable:true,
enumerable:false,//可枚举
configurable:true
},
[Symbol('parent')]:{
value:1,
writable:true,
enumerable:true,//可枚举
configurable:true
}
})
var child=Object.create(parent,{
c:{
value:1,
writable:true,
enumerable:true,//可枚举
configurable:true
},
d:{
value:1,
writable:false,
enumerable:true,//可枚举
configurable:true
},
e:{
value:1,
writable:true,
enumerable:false,//可枚举
configurable:true
},
f:{
value:1,
writable:true,
enumerable:true,//可枚举
configurable:false
}
})
for...in:遍历对象自身的是所有属性和继承的所有可枚举的属性,但是不包括Symbol属性
for(const key in child){
console.log(key)
}//c,d,f,a
Object.keys(obj) :返回对象本身的可枚举属性的数组,但是不包括Symbol属性
Object.keys(child);//["c","d","f"]
Object.getOwnPropertyNames(obj):返回对象自身所有属性(不包括继承的属性),但是不包括Symbol属性,返回的是一个数组
Object.getOwnPropertyNames(child);//["c","d","e","f"]
Object.getOwmPropertySymbols(obj):返回对象自身所有的Symbol属性的数组
Object.getOwnPropertySymbols(child);//[Symbol(child)]
Reflect.ownKeys(obj):返回对象自身所有属性,无论是否可枚举,是否Symbol属性
Reflect.ownKeys(child);//["c", "d", "e", "f", Symbol(child)]
---------------------
【转载,仅作分享,侵删】
作者:努力_才幸福
原文:https://blog.csdn.net/weixin_38098192/article/details/88821497
版权声明:本文为博主原创文章,转载请附上博文链接!
|
|