在CoffeeScript中,这个:
class Foo
method: (x) ->
x+1
Run Code Online (Sandbox Code Playgroud)
编译为:
// Generated By CoffeeScript
Foo = (function() {
function Foo() {}
Foo.prototype.method = function(x) {
return x+1;
}
return Foo;
})()
Run Code Online (Sandbox Code Playgroud)
这似乎有点过分.以下内容应在功能上相同:
// Generated by Dave
function Foo() {}
Foo.prototype.method = function(x) {
return x+1;
}
Run Code Online (Sandbox Code Playgroud)
额外的"封闭"包装的动机是什么?
这不仅仅是造型的空闲问题; 它对整体代码大小有影响.
Coffee版本缩小为84个字节:
Foo=function(){function e(){}return e.prototype.method=function(e){return e+1},e}();
Run Code Online (Sandbox Code Playgroud)
我的版本缩小为只有61个字节:
function Foo(){}Foo.prototype.method=function(e){return e+1};
Run Code Online (Sandbox Code Playgroud)
23个字节是愚蠢的无关紧要,但在一个有很多类的项目中,开销加起来.
好吧,我在下面写了一个答案,驳斥了字节大小理论......对于任何合理的类,Coffee方法都会变小.
可能还有其他原因.帮我想一想.