如何遍歷JS物件中所有的屬性 包括enumerable false的屬性?

時間 2021-06-05 01:05:06

1樓:煎餅打擊

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或字串,也不管是否可列舉。

2樓:

ES5 定義了 Obejct.getOwnPropertyNames 方法,用於返回物件所有自有屬性(包括可列舉屬性和不可列舉屬性)的鍵名組成的陣列:

function foo(d, e, f) {}

Object.getOwnPropertyNames(foo).forEach(function(key) )

// length

// name

// arguments

// caller

// prototype

ES6 還支援 Symbol 型別值做物件的鍵名,因此還引入了 Object.getOwnPropertySymbols 方法:

function foo(d, e, f) {}

var isFunction = Symbol('isFunction')

foo[isFunction] = true

Object.getOwnProperyNames(foo).forEach(function(prop) )

// length

// name

// arguments

// caller

// prototype

Object.getOwnPropertySymbols(foo).forEach(function(prop) )

// Symbol(isFunction)

3樓:趙嘉楠

你這需求就是扯淡,那個屬性的作用就是使用for in 遍歷的時候不會出現,完全的反語言,你這就好像殺人要被抓,你就想怎麼樣殺人才能不被抓

100 個數,如何遍歷得到所有全排列?

李沁 有個笨辦法不知行不行?演算法不好描述,反正就是挪來挪去的,跑下就知道了,有沒有大神解釋下這麼挪的原理是什麼?include include using namespace std using namespace arma int main int q r.n cols 1 int ends 0...

如何看待花木蘭 中所有演員採用英文對話

兔子 說英文對也許對全世界不懂中文的觀眾來說是件好事,但是作為中國人我還是會選擇看國語版,畢竟一群中中國人穿著古裝說的外語我還是接受不了。 剛才偷懶看了一下花木蘭。看了半個小時就關了,看不下去。處處違和。就這個問題來說,你全程英語沒問題,因為是美國拍的電影。但是你背景音時不時來兩句中文。這種感覺就是...

如何一年學完高中所有知識?

逍遙子 做夢就行,除非你是天才。不要想象著你掌握了多少技巧,沒用。題沒刷到位,只是理解了知識點沒多少用。因為你需要重複,在重複中才能進步。就像你懂得了駕駛汽車所有的注意事項,還有各種駕駛技巧,但是你不去開,不常開,也只是紙上談兵。 聽說今天很冷 恕我愚昧不知怎麼回答反正我復讀一年全靠語數外強行把15...