すべての 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() 関数/コンストラクターの AZ インスタンスは空のクラス オブジェクトになりますが、何の役に立つのでしょうか?
私が見つけたように正規表現を使用する/[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() クラスの説明が見つかりました -なぜ convertToFastObject 関数で高速になるのですか? 最適化のトリックです。なぜ AZ のインスタンスのリストなのかという疑問が残りますが、これは別の最適化のトリックなのか、それともコードのハッシュ テーブルのようなものなのでしょうか?