我在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。感谢所有的答案,对不起我的英语。
答案 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中无效,您需要删除前导/
。我认为这只是一个错字。