在 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 方法都会更小。
应该还有其他原因。帮我想想他们。