gpt4 book ai didi

javascript - V8 中的隐藏类

转载 作者:行者123 更新时间:2023-11-29 14:52:10 26 4
gpt4 key购买 nike

我的问题是这个问题的后续问题:Clearing up the `hidden classes` concept of V8

假设我有以下 JavaScript 代码:

var values1 = [ 1, 2, 3, 4];
var values2 = [ 5, 6, 7, 8];
var fields = [ "f1", "f2", "f3", "f4" ];

function Construct (fields, values) {
var i;
for (i = fields.length - 1; i >= 0; --i) this [fields [i]] = values [i];
}

var a = new Construct (fields, values1);
var b = new Construct (fields, values2);

那么,ab 最终会拥有相同的隐藏类吗?

这个问题的背景是,对我来说,如果属性名称在编程时未知,这似乎是利用“隐藏类”优化的唯一可能性。

实际相关性:假设您编写了一个处理表格数据的应用程序,其中列的名称是动态的(在编程时未知)。然后表的行在语义上共享同一个类,但是如果引擎没有优化,你最好使用数组并在代码中手动进行“列名 ->索引”转换(这可能会使代码变得丑陋,因为你必须缓存索引)。

最佳答案

是的。隐藏类是完全动态的优化。在第一个近似值中,如果 (1) 它们是由同一段代码创建的,并且 (2) 它们以相同的顺序添加相同的属性,则两个对象最终将具有相同的类。

关于javascript - V8 中的隐藏类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23982720/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com