V8引擎中的Hidden Class
原作者:江凌 原文链接 Hidden Class 是为了实现对象属性的快速存取。 JavaScript是一种动态编程语言:属性可进行动态的添加和删除,这意味着一个对象的属性是可变的,大多数的JavaScript引擎使用一个类似字典的数据结构来存储对象的属性 —— 那么每个属性的访问都需要动态的去查询属性在内存中的位置。那么相比Java这样的静态语言来说就会慢的多。静态语言的属性地址会在类定义后通过编译,相对于对象有一个固定的偏移量,访问属性本质上只是简单的读取和存储,一条指令就可以搞定。 为了提高属性的访问速度, 在这种场景下,V8并没有动态的去内存中查询属性,而是动态的去创建Hidden Class 。Hidden Class 的基本想法并非什么新的创见,在prototype-based的编程语言Self中也做了类似的事情。An Eff
