CoffeeScript では、次のようになります。
class Foo
method: (x) ->
x+1
コンパイルすると:
// Generated By CoffeeScript
Foo = (function() {
function Foo() {}
Foo.prototype.method = function(x) {
return x+1;
}
return Foo;
})()
これは少し過剰に思えます。以下は機能的に同一である必要があります。
// Generated by Dave
function Foo() {}
Foo.prototype.method = function(x) {
return x+1;
}
追加の「クロージャー」ラッパーの動機は何ですか?
これは単なるスタイリングの問題ではありません。これは、全体のコード サイズに影響します。
Coffee バージョンは 84 バイトに縮小されます。
Foo=function(){function e(){}return e.prototype.method=function(e){return e+1},e}();
私のバージョンは 61 バイトのみに縮小されます。
function Foo(){}Foo.prototype.method=function(e){return e+1};
23 バイトはばかげた種類の無関係ですが、多くのクラスを含むプロジェクトでは、オーバーヘッドが増え始めます。
わかりました、バイトサイズ理論に反論する答えを以下に書きました...合理的なクラスでは、Coffeeメソッドは小さくなります。
他にも理由がありそうです。それらについて考えるのを手伝ってください。