繼承的可列舉屬性 (yes)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)
自身的不可列舉屬性 (no)
自身的symbol屬性 (no)
繼承的可列舉屬性 (no)for(let attr in test)
for(let attr in testinstance)
自身的可列舉屬性 (yes)
自身的不可列舉屬性 (no)
自身的symbol屬性 (no)
繼承的可列舉屬性 (no)object.keys(test); //["num", "str", "boolean", "unf", "nul", "obj", "arr", "date", "reg", "err", "func", "num1"]
object.keys(testinstance); //
自身的可列舉屬性 (yes)
自身的不可列舉屬性 (yes)
自身的symbol屬性 (no)
繼承的symbol屬性 (no)object.getownpropertynames(test); //["num", "str", "boolean", "unf", "nul", "obj", "arr", "date", "reg", "err", "noenumerable", "func", "num1"]
object.getownpropertynames(testinstance); //
自身的symbol屬性 (yes)
繼承的可列舉屬性 (no)object.getownpropertysymbols(test); //[symbol(s)]
object.getownpropertysymbols(testinstance); //
自身的可列舉屬性 (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...