我有一个用咖啡脚本编写的课程,例如,
class Example
constructor: ->
$.each [1, 2, 3], (key, value) =>
@test = value
return @test
render: ->
alert @test
我把这个类作为一个单独的文件,Example.coffee
现在我希望能够在我的主 javascript 文件中实例化,如下所示:
d = new Example
d.render()
但即使该类作为脚本包含在页面上,也是未定义的,例如
<script src="Example.js></script>
<script src="main.js"></script>
如何使该类对主文件公开可用?
您可以通过将类声明为位于window
命名空间:
class window.Example
constructor: ->
$.each [1, 2, 3], (key, value) =>
@test = value
return @test
render: ->
alert @test
这将把Example
直接进入window
。你也可以说class @Example
在多数情况下。
默认情况下,CoffeeScript 将每个文件包装在一个(function() { ... })()
包装器以防止名称空间污染。您可以通过提供来防止这种情况-b http://coffeescript.org/#usage编译 CoffeeScript 时:
-b, --bare
在没有顶级函数安全包装器的情况下编译 JavaScript。
但这可能不是您的选择(或者可能是一个丑陋的选择)。通常的方法是在加载类之前在某处声明应用程序特定的命名空间:
// Probably in a <script> in your top-level HTML...
App = { };
然后适当地命名你的类:
class App.Example
#...
然后通过App
命名空间。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)