gpt4 book ai didi

javascript - 闭包编译器可以使用链接作为缩小技术吗?

转载 作者:行者123 更新时间:2023-11-30 05:47:42 25 4
gpt4 key购买 nike

// ==ClosureCompiler==
// @compilation_level ADVANCED_OPTIMIZATIONS
// @exclude_default_externs true
// @js_externs var console = {log: function(){}};
// @output_file_name default.js
// ==/ClosureCompiler==

/** @constructor */
function Test(){};
Test.prototype['action'] = function(){
console.log('Hello');
return this;
}

var test = new Test();

如果我添加一行:

test['action']()['action']()['action']();

编译它我得到这个尺寸:

113 bytes (101 bytes gzipped)

如果我用这个等效代码替换该行:

test['action']();
test['action']();
test['action']();

我得到这个尺寸:

123 bytes (108 bytes gzipped)

我希望闭包编译器能够识别,因为我的函数返回 this,它可以将调用链接到 action(它在第一个测试中是如何完成的)并且得到较小尺寸的结果。有没有办法注释上面的代码,以便 Closure Compiler 能够进行此优化?

注意:大小的差异是由链接引起的。输出的区别如下:

使用链接:

(new a).action().action().action();

没有链接:

var b=new a;b.action();b.action();b.action();

最佳答案

为此有一个编译器传递:

https://code.google.com/p/closure-compiler/source/browse/src/com/google/javascript/jscomp/ChainCalls.java

但是默认情况下不启用它。它没有为我们测试过的项目提供任何节省,但您可以尝试启用它。它由编译器的 Java API 中的“CompilerOptions#setChainCalls”方法控制。

关于javascript - 闭包编译器可以使用链接作为缩小技术吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16975852/

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