官术网_书友最值得收藏!

3.5.7 屬性的遍歷

ES6一共有5種方法可以遍歷對象的屬性。

(1)for...in

for...in循環(huán)遍歷對象自身的和繼承的可枚舉屬性(不含Symbol屬性)。

(2)Object.keys(obj)

Object.keys返回一個數(shù)組,包括對象自身的(不含繼承的)所有可枚舉屬性(不含Symbol屬性)。

(3)Object.getOwnPropertyNames(obj)

Object.getOwnPropertyNames返回一個數(shù)組,包含對象自身的所有屬性(不含Symbol屬性,但是包括不可枚舉屬性)。

(4)Object.getOwnPropertySymbols(obj)

Object.getOwnPropertySymbols返回一個數(shù)組,包含對象自身的所有Symbol屬性。

(5)Reflect.ownKeys(obj)

Reflect.ownKeys返回一個數(shù)組,包含對象自身的所有屬性,不管屬性名是Symbol或字符串,也不管是否可枚舉。

以上的5種方法遍歷對象的屬性遵守同樣的屬性遍歷的次序規(guī)則:

· 首先遍歷所有屬性名為數(shù)值的屬性,按照數(shù)字排序。

· 其次遍歷所有屬性名為字符串的屬性,按照生成時間排序。

· 最后遍歷所有屬性名為Symbol值的屬性,按照生成時間排序。

Reflect.ownKeys({ [Symbol()]:0, b:0, 10:0, 2:0, a:0 })
// ['2', '10', 'b', 'a', Symbol()]

上面的代碼中,Reflect.ownKeys方法返回一個數(shù)組,包含參數(shù)對象的所有屬性。這個數(shù)組的屬性次序是這樣的,首先是數(shù)值屬性2和10,其次是字符串屬性b和a,最后是Symbol屬性。

主站蜘蛛池模板: 武平县| 郑州市| 临夏市| 蒙山县| 伊宁县| 太湖县| 灵宝市| 无为县| 翁牛特旗| 泗阳县| 永宁县| 昭苏县| 湛江市| 建阳市| 英超| 定结县| 咸阳市| 华蓥市| 蕉岭县| 绍兴县| 平乡县| 天全县| 新干县| 家居| 建阳市| 东乌| 长岛县| 微山县| 望谟县| 吉林省| 兰考县| 寿光市| 浮山县| 澄江县| 宜昌市| 喀喇| 大田县| 余庆县| 赤壁市| 南部县| 盈江县|