V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
uccs
V2EX  ›  问与答

V8 隐藏类求助

  •  
  •   uccs · Feb 11, 2023 · 858 views
    This topic created in 1177 days ago, the information mentioned may be changed or developed.

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

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

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

    下面是代码

    代码一:

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

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

    代码二:

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

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

    2 replies    2023-02-11 21:48:13 +08:00
    weiwoxinyou
        1
    weiwoxinyou  
       Feb 11, 2023
    我想你需要的回答是这个: https://juejin.cn/post/7064390052519870501 ,个人理解是,代码一每一次新增对象,隐藏类都变成了一个新的类,这样代码二新增的时候,没找到与其形状相同的类,于是新建了 3 个隐藏类针对对象本身及对象的两个属性。
    uccs
        2
    uccs  
    OP
       Feb 11, 2023
    @weiwoxinyou 这篇文章直接抄极客时间的 V8 专栏,我就是看了这个专栏,掉进了隐藏类的坑里(捂脸)
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   805 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 19:45 · PVG 03:45 · LAX 12:45 · JFK 15:45
    ♥ Do have faith in what you're doing.