ES6 屬性遍歷的方法

2021-09-17 23:40:54 字數 1006 閱讀 4246

es6 一共有 5 種方法可以遍歷物件的屬性。

(1)for…in

for…in迴圈遍歷物件自身的和繼承的可列舉屬性(不含 symbol 屬性)。

(2)object.keys(obj)

object.keys返回乙個陣列,包括物件自身的(不含繼承的)所有可列舉屬性(不含 symbol 屬性)的鍵名。

(3)object.getownpropertynames(obj)

object.getownpropertynames返回乙個陣列,包含物件自身的所有屬性(不含 symbol 屬性,但是包括不可列舉屬性)的鍵名。

(4)object.getownpropertysymbols(obj)

object.getownpropertysymbols返回乙個陣列,包含物件自身的所有 symbol 屬性的鍵名。

(5)reflect.ownkeys(obj)

reflect.ownkeys返回乙個陣列,包含物件自身的所有鍵名,不管鍵名是 symbol 或字串,也不管是否可列舉。

以上的 5 種方法遍歷物件的鍵名,都遵守同樣的屬性遍歷的次序規則。

首先遍歷所有數值鍵,按照數值公升序排列。

其次遍歷所有字串鍵,按照加入時間公升序排列。

最後遍歷所有 symbol 鍵,按照加入時間公升序排列。

reflect.ownkeys()

// [『2』, 『10』, 『b』, 『a』, symbol()]

上面**中,reflect.ownkeys方法返回乙個陣列,包含了引數物件的所有屬性。這個陣列的屬性次序是這樣的,首先是數值屬性2和10,其次是字串屬性b和a,最後是 symbol 屬性。

結論:推薦在迴圈物件屬性的時候,使用for…in,在遍歷陣列的時候的時候使用for…of。

for…in迴圈出的是key,for…of迴圈出的是value

注意,for…of是es6新引入的特性。修復了es5引入的for…in的不足

for…of不能迴圈普通的物件,需要通過和object.keys()搭配使用

ES6 屬性的遍歷

1.for in 迴圈遍歷物件自身的和繼承的可列舉屬性 不含symbol屬性 2.obejct.keys obj 返回乙個陣列,包括物件自身的 不含繼承的 所有可列舉屬性 不含symbol屬性 3.object.getownpropertynames obj 返回乙個陣列,包含物件自身的所有屬性 不...

ES6 屬性的遍歷

可列舉屬性 描述物件的 enumerable 屬性成為 可列舉性 如果該屬性為 false,就表示某些操作會忽略當前屬性。for in,object.keys json.stringify 1 for in 迴圈遍歷物件自身的和繼承的可列舉屬性 不含 symbol 屬性 2 object.keys ...

ES6 屬性的遍歷

es6 一共有6種方法可以遍歷物件的屬性 1 for.in for.in 迴圈遍歷物件自身的和繼承的可列舉屬性 不含symbol屬性 2 object.keys obj object.keys 返回乙個陣列,包括物件自身的 不含繼承的 所有可列舉屬性 不含symbol屬性 3 object.geto...