[英]Internally how does JavaScript iterate over object keys?
在JavaScript中,當我們使用for...in
循環或Object.keys()
方法時,內部引擎如何遍歷對象鍵?
我知道從一個實現到另一個實現可能會略有不同,但是我敢肯定有一個通用的方法,可以概述一下嗎?
謝謝!
它與object.keys的工作原理無關,而與對象的屬性表示方式有關。 在V8中,存在對象內屬性(與C結構字段或Java對象字段相同的表示形式),存儲在固定數組中的固定對象外屬性和存儲在哈希表中的動態對象外屬性。
對象內屬性和對象外固定屬性的布局分別存儲在對象的隱藏類中。 如果對象的布局發生更改,它將獲得一個新的隱藏類。 就像Java的Class對象一樣 ,隱藏的類對象包含固定屬性的名稱,您只需遍歷該數組即可。
當使用哈希表(又名字典,哈希圖或規范化對象)表示形式時,必須像對任何哈希表進行迭代一樣,對哈希表鍵進行動態迭代。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.