[英]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.