A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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
版权声明:本文为博主原创文章,转载请附上博文链接!

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马