创建coffeescript类

时间:2014-05-14 15:32:45

标签: coffeescript

我在coffeescript中有一个简单的类(这个类位于file.js.coffee中):

class ExampleClass
  constructor: (arguments) ->   

  makeSTH: (page) -> 

  makeSTHElse: (data) =>

我有另一个咖啡文件。我包含上面的文件,我尝试用这种方式创建ExampleClass的实例:

/#= require file.js.coffee

class ExampleClass2
  constructor: (arguments) -> 
    @ex = new ExampleClass(sth)

但我有这样的事情:

ReferenceError: ExampleClass is not defined

我不知道如何正确引用ExampleClass。感谢所有的答案,对不起我的英语。

1 个答案:

答案 0 :(得分:2)

CoffeeScript会将每个源文件编译为单独的编译单元。每个编译单元都将被包装在一个块中,这样全局命名空间就不会被错误地污染。因此,ExampleClass实际上被编译为类似:

(function () {
  var ExampleClass;
  ExampleClass = function (args) {}
  ...
}).call(this);

您可以看到ExampleClass只能从同一来源访问。要从其他源文件访问它,您需要将其绑定到window

class window.ExampleClass
  constructor: (args) ->
  ...

PS。您不允许在CoffeeScript中使用arguments作为正式参数名称,因为它在JavaScript中具有特殊含义。

并且/#= require file.js.coffee在CoffeeScript中无效,您需要删除前导/。我认为这只是一个错字。