gpt4 book ai didi

javascript - 无法在主 javascript 中访问 c​​offeescript 类

转载 作者:可可西里 更新时间:2023-11-01 01:55:32 25 4
gpt4 key购买 nike

我有一个用 coffeescript 编写的类,例如,

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 来防止这种情况发生编译 CoffeeScript 时:

-b, --bare
Compile the JavaScript without the top-level function safety wrapper.

但这可能不是您的选择(或者它可能是一个丑陋的选择)。通常的方法是在加载类之前在某处声明应用程序特定的命名空间:

// Probably in a <script> in your top-level HTML...
App = { };

然后适本地命名你的类:

class App.Example
#...

然后通过 App 命名空间引用所有内容。

关于javascript - 无法在主 javascript 中访问 c​​offeescript 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10093835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com