js的属性栈堆示意图

图片描述

上图: obj存的是地址,指向堆中的对象

那么obj.a如何用栈堆表示呢?最好有图示哈,谢谢!

阅读 3.2k
1 个回答

在v8里面, 在使用{a: 1}的时候, 会创建一个隐藏类, 有一个属性a, 类型为number, 偏移为0. 当通过obj.a获取这个类的实例的a属性时, 会通过obj查到堆中的起始地址, 加上偏移就可以获取到obj.a的地址了. 在古老的浏览器中, 一个object就是一个单纯的hash table, 和PHP很类似.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题