遍歷對象屬性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鍵,按照加入時間升序排列

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM