一、枚舉是什么
- 枚舉指對象的屬性是否可以遍歷出來,簡單點說就是是否可以被列舉出來。可枚舉性決定了這個屬性能否被for…in查找遍歷到。
- js中基本包裝類型的原型屬性是不可枚舉的,比如:
基本包裝類型:Boolean,Number和String,就是即是基本類型,也是引用類型。基本包裝類型還可以像引用類型一樣通過對象的方法訪問它自帶的一些方法,但是不能像引用類型那樣自定義方法。
結果為空,因為Number中內置的屬性是不可枚舉的;
- 判斷一個屬性是否可枚舉,用
Object.propertyIsEnumerable()
來判斷,但需要注意的一點是如果需要判斷的屬性在object的原型鏈上,不管它是否可枚舉,Object.propertyIsEnumerable()
都會返回false
propertyIsEnumerable()
方法返回一個布爾值,表示指定的屬性是否可枚舉。但是在原型鏈上propertyIsEnumerable不被考慮
hasOwnProperty()
方法會返回一個布爾值,指示對象自身屬性中是否具有指定的屬性
二、枚舉性的作用
- 屬性的枚舉性會影響以下三個函數的結果:
for…in
Object.keys()
JSON.stringify()
舉例:
1、 .for…in循環可以枚舉(遍歷)出對象本身具有的屬性,通過Object.defineProperty()方法加的可枚舉屬性,或者通過原型對象綁定的可以枚舉屬性。