美文网首页
遍历对象的几种方法

遍历对象的几种方法

作者: 明明你也一样 | 来源:发表于2019-11-06 10:45 被阅读0次

    预定义如下对象:

    Object.prototype.parentKey = 'pValue';
    Object.prototype.parentFun = function(){};
    let obj = {
      mykey: 'value',
      myFun: function(){},
      [Symbol()]:'symbolValue'
    }
    // 在obj上定义2个不可枚举的属性
    Object.defineProperty(obj, 'myUnemurableKey', {value:'value22', enumerable:false});
    Object.defineProperty(obj, 'myUnenmurableFunc', {value:function(){}, enumrable:false});
    

    for in

    用于遍历自身原型对象可枚举的属性

    for (let key in obj) {
        console.log(key)
    }
    

    输出:
    mykey
    myFun
    parentKey
    parentFun

    Object.keys()方法

    用于返回对象自身的所有可枚举属性

    Object.keys(obj)
    

    输出:
    ["mykey", "myFun"]

    Object.getOwnPropertyNames()方法

    用于返回对象自身所有属性,包含可枚举属性和不可枚举属性,不包含Symbol属性

    Object.getOwnPropertyNames(obj)
    

    输出:
    ["mykey", "myFun", "myUnemurableKey", "myUnenmurableFunc"]

    Object.getOwnPropertySymbols()方法

    用于返回对象所有Symbol属性,包含可枚举属性和不可枚举属性

    Object.getOwnPropertySymbols(obj)
    

    输出:
    [Symbol()]

    Reflect.ownKeys()方法

    用于返回对象所有属性,包含可枚举属性和不可枚举属性和Symbol属性

    Reflect.ownKeys(obj)
    

    输出:
    ["mykey", "myFun", "myUnemurableKey", "myUnenmurableFunc", Symbol()]

    Object.getOwnPropertyDescriptors方法

    这个方法可以返回对象自身所有属性和属性描述对象

    Object.getOwnPropertyDescriptors(obj)
    

    输出:

    {
        "mykey": {
            "value": "value",
            "writable": true,
            "enumerable": true,
            "configurable": true
        },
        "myFun": {
            "writable": true,
            "enumerable": true,
            "configurable": true
        },
        "myUnemurableKey": {
            "value": "value22",
            "writable": false,
            "enumerable": false,
            "configurable": false
        },
        "myUnenmurableFunc": {
            "writable": false,
            "enumerable": false,
            "configurable": false
        }
    }
    

    相关文章

      网友评论

          本文标题:遍历对象的几种方法

          本文链接:https://www.haomeiwen.com/subject/vyddbctx.html