5 種方法遍歷物件的屬性

2021-09-03 03:17:25 字數 1798 閱讀 3428

const s = symbol('s');

// 測試物件

const test =

},arr: [0, 1, 2],

date: new date('1996/03/03'),

reg: new regexp(/我是乙個正則/ig),

err: new error('我是乙個錯誤'),

[s]: '我的key是symbol',

noenumerable: '我是手動設定的不可列舉屬性',

func() ,

get num1() ,

set num1(val)

};object.defineproperty(test, 'noenumerable', );

// 建立乙個新物件,使用現有的物件來提供新建立的物件的__proto__

const testinstance = object.create(test);

繼承的可列舉屬性 (yes)

自身的可列舉屬性 (yes)

自身的不可列舉屬性 (no)

自身的symbol屬性 (no)

for(let attr in test) 

for(let attr in testinstance)

繼承的可列舉屬性 (no)

自身的可列舉屬性 (yes)

自身的不可列舉屬性 (no)

自身的symbol屬性 (no)

object.keys(test); //["num", "str", "boolean", "unf", "nul", "obj", "arr", "date", "reg", "err", "func", "num1"]

object.keys(testinstance); //

繼承的可列舉屬性 (no)

自身的可列舉屬性 (yes)

自身的不可列舉屬性 (yes)

自身的symbol屬性 (no)

object.getownpropertynames(test); //["num", "str", "boolean", "unf", "nul", "obj", "arr", "date", "reg", "err", "noenumerable", "func", "num1"]

object.getownpropertynames(testinstance); //

繼承的symbol屬性 (no)

自身的symbol屬性 (yes)

object.getownpropertysymbols(test); //[symbol(s)]

object.getownpropertysymbols(testinstance); //

繼承的可列舉屬性 (no)

自身的可列舉屬性 (yes)

自身的不可列舉屬性 (yes)

自身的symbol屬性 (yes)

reflect.ownkeys(test); //["num", "str", "boolean", "unf", "nul", "obj", "arr", "date", "reg", "err", "noenumerable", "func", "num1", symbol(s)]

reflect.ownkeys(testinstance); //

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

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

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

遍歷物件屬性5種方法,排列順序規則

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

ES6遍歷物件屬性的5種方法

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

Map遍歷的4種方法

一 通過map.keyset遍歷key和value,普遍使用,二次取值 定義乙個map集合 mapmap new hashmap 給map結合賦值 map.put k1 v1 map.put k2 v2 map.put k3 v3 map.put k4 v4 遍歷 for string key ma...