V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
uccs
V2EX  ›  问与答

V8 隐藏类求助

  •  
  •   uccs · 2023-02-11 20:22:58 +08:00 · 499 次点击
    这是一个创建于 454 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我看网上的资料说,v8 实现隐藏类有一个假设,对象的行状是固定的。

    动态添加属性会创建新的隐藏类,为什么我在 chrome memory 中看到现象是这两种写法都会创建三个隐藏类(back_pointer 指向上一个隐藏类),这是为什么?

    以我的理解,代码一,应该是创建三个隐藏类,代码二应该只有一个隐藏类

    下面是代码

    代码一:

    const foo = {}
    foo.name = "a"
    foo.type = "b"
    

    对应隐藏类图片: f00 隐藏类

    代码二:

    const foo2 = {
      name: "a",
      type: "b",
    }
    

    对应隐藏类图片: f002 隐藏类

    2 条回复    2023-02-11 21:48:13 +08:00
    weiwoxinyou
        1
    weiwoxinyou  
       2023-02-11 21:35:18 +08:00
    我想你需要的回答是这个: https://juejin.cn/post/7064390052519870501 ,个人理解是,代码一每一次新增对象,隐藏类都变成了一个新的类,这样代码二新增的时候,没找到与其形状相同的类,于是新建了 3 个隐藏类针对对象本身及对象的两个属性。
    uccs
        2
    uccs  
    OP
       2023-02-11 21:48:13 +08:00
    @weiwoxinyou 这篇文章直接抄极客时间的 V8 专栏,我就是看了这个专栏,掉进了隐藏类的坑里(捂脸)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1029 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 19:51 · PVG 03:51 · LAX 12:51 · JFK 15:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.