gpt4 book ai didi

dart - 对于 dartjs 什么是字母表( A 到 Z )空类实例的奇数列表?

转载 作者:行者123 更新时间:2023-12-05 00:37:54 26 4
gpt4 key购买 nike

在每个 dart 文件的已编译 javascript 的顶部是这个奇怪的列表。

function dart() {
this.x = 0;
delete this.x;
}
var A = new dart;
var B = new dart;
var C = new dart;
var D = new dart;
var E = new dart;
var F = new dart;
... etc etc ...
var Z = new dart;

我扫描了其余代码以寻找 .A(或任何其他字母),但没有成功。这到底有什么用?最终结果是 dart() 函数/构造函数的 A-Z 实例是空类对象,但有什么用呢?

使用像 /[A-Z]{1}\./ 这样的正则表达式,我确实发现一些字母实例用属性装饰,然后所有 27 个字母都通过这个函数运行:

function convertToFastObject(properties) {
function MyClass() {
}
MyClass.prototype = properties;
new MyClass();
return properties;
}
;
A = convertToFastObject(A);
B = convertToFastObject(B);
C = convertToFastObject(C);
... etc etc ...
Z = convertToFastObject(Z);

这让我更加困惑了。由于该行看起来像 SomeObject = convertToFastObject(SomeObject); 没有变化。

编辑/更新:找到了 convertToFastObject 及其前身 dart() 类的解释 - Why the convertToFastObject function make it fast?这是一个优化技巧。仍然留给我一个问题,为什么是 A-Z 实例列表,它只是另一种优化技巧还是某种代码哈希表?

最佳答案

A-Z 类是为各种 Dart 库保留的全局变量。正如您在 source 中看到的那样,其中的一小部分用于特定的库。 :

static const reservedGlobalObjectNames = const <String>[
"A",
"B",
"C", // Global object for *C*onstants.
"D",
"E",
"F",
"G",
"H", // Global object for internal (*H*elper) libraries.
// I is used for used for the Isolate function.
"J", // Global object for the interceptor library.
"K",
"L",
"M",
"N",
"O",
"P", // Global object for other *P*latform libraries.
"Q",
"R",
"S",
"T",
"U",
"V",
"W", // Global object for *W*eb libraries (dart:html).
"X",
"Y",
"Z",
];

所有其余似乎都用于隔离,如 globalObjectFor 所示方法,并查看使用 isolates 的 dart2js 编译代码的结果。

关于dart - 对于 dartjs 什么是字母表( A 到 Z )空类实例的奇数列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27630248/

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