javascript - 如何在 V8 中检测从一种形状到另一种形状的过渡?
问题描述
假设我有下一个代码:
let x = null;
x = 10;
我如何在这里检测形状过渡?从 NULL_TYPE 到 SMI ?我知道应该有一些内置功能。这是清单。
我希望它可以node --allow-natives-syntax
像那样运行或smth,例如:
let x = null;
x = 10;
console.log(%DetectTransition(x))
解决方案
(这里是 V8 开发人员。)
该代码片段中没有形状转换,因为“形状”概念仅适用于对象。
这是一个形状转换的例子:
let a = {x: 1};
let b = {x: 1};
%HaveSameMap(a, b); // true
b.y = 2;
%HaveSameMap(a, b); // false
a.y = 3;
%HaveSameMap(a, b); // true
%HaveSameMap
比较所提供对象的形状描述符并返回true
or false
。有关更多详细信息,您还可以%DebugPrint
按照@JonasWilms 的建议使用。
当然,我们在这里讨论的是内部细节(包括幕后发生的事情,以及如何检查它以进行调试或好奇)。没有人承诺事情将继续以这种方式进行。(我认为基础不太可能改变,但细节确实会改变。)
推荐阅读
- c++ - 生成文件和链接:库顺序?
- python - 从列表中过滤另一个嵌套列表中不存在的项目的最干净的方法
- delphi - 如何访问和控制样式内的复选框?
- javascript - 如何使用可排序的 JqueryUi 一次同时拖动多个项目?
- flutter - 滚动控制器没有在 Flutter 中监听滚动
- javascript - 重新启动动画循环Javascript / JQuery后如何用新图像更新图像
- python - 如何在python中将列表列表转换为数组?
- php - SIMPLE_DOM_HTML.PHP .. 想要从网站的所有 html 类中获取数据,但该网站上存在延迟加载
- r - tmap:将插图与 tmap_arrange 合并
- c++ - 如何从具有该类内部函数的类中正确运行渲染线程?