在javascript中赊豌,對(duì)象的屬性的是否具有枚舉性是由enumerable值決定。
對(duì)象是一系列屬性和方法的集合
一個(gè)屬性包含一個(gè)名和一個(gè)值
一绵咱,怎么判斷屬性是否是枚舉
方法一:
使用for ----in ----遍歷
var num = new Number();
for(var pro in num) {
console.log("num." + pro + " = " + num[pro]);
}
輸出結(jié)果是空碘饼。因?yàn)镹umber中內(nèi)置的屬性是不可枚舉的。
Object對(duì)象的propertyIsEnumerable()方法可以判斷此對(duì)象是否包含某個(gè)屬性悲伶,并且這個(gè)屬性是否可枚舉
需要注意的是:如果判斷的屬性存在于Object對(duì)象的原型內(nèi)艾恼,不管它是否可枚舉都會(huì)返回false。
方法二:
對(duì)象的沒個(gè)屬性都有一個(gè)描述對(duì)象(descriptor),用來控制屬性的行為麸锉,Object.getOwnPropertyDescriptor方法可以獲取該屬性的描述對(duì)象钠绍。
let obj = { a: 1}
Object.getOwnPropertyDescriptor(obj, 'a')
結(jié)果
Object {value: 1, writable: true, enumerable: true, configurable: true}
configurable:true
enumerable:true
value:1
writable:true
描述對(duì)象的enumerable屬性,稱為“可枚舉性”花沉,如果該屬性為false,標(biāo)識(shí)忽略當(dāng)前屬性