惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
博客园 - 司徒正美
Hugging Face - Blog
Hugging Face - Blog
博客园 - 叶小钗
The Cloudflare Blog
D
DataBreaches.Net
J
Java Code Geeks
G
Google Developers Blog
L
LangChain Blog
N
Netflix TechBlog - Medium
Stack Overflow Blog
Stack Overflow Blog
月光博客
月光博客
酷 壳 – CoolShell
酷 壳 – CoolShell
WordPress大学
WordPress大学
小众软件
小众软件
量子位
Apple Machine Learning Research
Apple Machine Learning Research
P
Proofpoint News Feed
博客园_首页
罗磊的独立博客
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
B
Blog
腾讯CDC

博客园 - 悉野

go编译期接口断言 / 编译期接口检查(compile-time interface assertion / compile-time interface check) Go 的类型断言 ssh连结vmware中ubuntu的共享文件夹 spring加载冲突问题 spring一个错误修正 抓安卓日记到文件 注册表删除桌面顽固图标 github买的账号无法拉取代码的解决方法 apk常用命令 java服务器异常处理 ES6 学习难度分层 promise原理 材质, 纹理, shader之间的关系 TCP与UDP区别 javascript中=>与function的区别 cocos使用fgui 几种服务注册与发现的区别 mybatis测试 向量点乘与叉乘 unity画布3种渲染模式 go学习笔记10(HTTP) go学习笔记9(TCP) go学习笔记8(反射) c++简单的线程池 operator new 是 C++ 动态内存分配的核心函数,负责分配原始内存,不调用构造函数 C++的定位放置new(Placement new) go学习笔记7(泛型,文件读写,测试) go学习笔记6(协程与channel,select使用,线程安全,异常处理) go学习笔记5(函数,结构体,自定义类型和类别名,接口) go学习笔记4(数组与切片,map,if,switch,for循环)
javascript中函数解析过程
悉野 · 2026-05-08 · via 博客园 - 悉野

a.b查找是有b,  先从Hidden Class查找(fast Path),  找到的话, 使用偏移来值, 找不到退化为(slow Path), 使用map查找

JSObject a
├─ Map* ──────────────► MapA
│                ├─ instance_size
│                ├─ descriptor_array
│                │ ├─ x @ offset 0
│                │ └─ y @ offset 1
│                └─ transition
│                └─ "z" → MapB

└─ properties[0] = 1
  properties[1] = 2

Map 是“结构描述”

properties 是“值数组”

从map中拿到offset, 然后再拿值

fast Path:

map = a->map();
desc = map->descriptor_array["b"];
offset = desc->field_index();
value = a->properties[offset];

slow Path:

dict = a->property_dictionary();
entry = dict->Find("b"); // hash

对比项

数组

链表

Hidden Class

连续内存

✅(descriptor)

动态增长

✅(transition)

查找速度

O(1)

O(n)

O(1)

结构变化

是否存值