美文网首页JS
JS可枚举属性和不可枚举属性

JS可枚举属性和不可枚举属性

作者: NnnLillian | 来源:发表于2019-10-26 11:49 被阅读0次

    最近在学习《深入理解ES6》,例子中有一个Object.keys(obj)方法,如果对这个方法不太熟悉可以看Object.keys()--MDN,MDN的解释非常详细。

    Object.keys()方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和使用for...in 循环遍历该对象时返回的顺序一致 。如果对象的键-值都不可枚举,那么将返回由键组成的数组。
    栗子:

    // getFoo is a property which isn't enumerable
    var myObj = Object.create({}, {
     getFoo: {
       value: function () { return this.foo; }
    } 
    });
    myObj.foo = 1;
    console.log(Object.keys(myObj)); // console: ['foo']
    

    看注释有一句which isn't enumerable,那么

    什么是可枚举属性

    • 可枚举属性是指那些内部 “可枚举” 标志设置为 true 的属性。对于通过直接的赋值和属性初始化的属性,该标识值默认为即为 true。但是对于通过 Object.defineProperty 等定义的属性,该标识值默认为 false。
    • 其中js中基本包装类型的原型属性是不可枚举的,如Object, Array, Number等。
    • 可枚举的属性可以通过for...in循环进行遍历(除非该属性名是一个Symbol),或者通过Object.keys()方法返回一个可枚举属性的数组。

    应用实例可参考这篇文章,链接 --> js中的可枚举属性

    相关文章

      网友评论

        本文标题:JS可枚举属性和不可枚举属性

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