在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,标识忽略当前属性