// ==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();