相关疑难解决方法(0)

为什么CoffeeScript在闭包中包装类定义?

在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方法都会变小.

可能还有其他原因.帮我想一想.

javascript minify coffeescript

8
推荐指数
2
解决办法
1375
查看次数

标签 统计

coffeescript ×1

javascript ×1

minify ×1