javascript中的可枚举属性与不可枚举属性

在javascript中,对象的属性的是否具有枚举性是由enumerable值决定。

对象是一系列属性和方法的集合
一个属性包含一个名和一个值

一,怎么判断属性是否是枚举

方法一:

使用for —-in —-遍历

var num = new Number();
for(var pro in num) {
    console.log("num." + pro + " = " + num[pro]);
}

输出结果是空。因为Number中内置的属性是不可枚举的。
Object对象的propertyIsEnumerable()方法可以判断此对象是否包含某个属性,并且这个属性是否可枚举
需要注意的是:如果判断的属性存在于Object对象的原型内,不管它是否可枚举都会返回false。

方法二:

对象的没个属性都有一个描述对象(descriptor),用来控制属性的行为,Object.getOwnPropertyDescriptor方法可以获取该属性的描述对象。

let obj = { a: 1}
Object.getOwnPropertyDescriptor(obj, 'a')

结果
Object {value: 1, writable: true, enumerable: true, configurable: true}
configurable:true
enumerable:true
value:1
writable:true

描述对象的enumerable属性,称为“可枚举性”,如果该属性为false,标识忽略当前属性

    原文作者:胡萝卜樱
    原文地址: https://www.jianshu.com/p/322a149d0f61
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞