gpt4 book ai didi

javascript - 从 CoffeeScript 调用 JavaScript "new"

转载 作者:行者123 更新时间:2023-11-30 10:39:25 30 4
gpt4 key购买 nike

我正在尝试在 CoffeeScript 代码中重用 JavaScript 库 (sim.js)。在 sim.js 附带的示例中,有 3 个文件,“sim-0.26.js”、“buffet_restaurant.js”和“buffet_restaurant.html”像这样连接在一起(为了简化,我删除了一些参数):

在“buffet_restaurant.html”里面,有

<script type="text/javascript" src="./buffet_restaurant_files/sim-0.26.js"></script>
<script type="text/javascript" src="./buffet_restaurant_files/buffet_restaurant.js"></script>
<script type="text/javascript">
$(function () {
$("#run_simulation").click(function () {
var results = buffetRestaurantSimulation();
...

其中 buffetRestaurantSimulation 是 buffet_restaurant.js 中的一个函数。 buffet_restaurant.js 中的代码是这样开始的:

function buffetRestaurantSimulation() 
{
var sim = new Sim();
...

其中 Sim 在 sim-0.26.js 中定义,如下所示:

function Sim(){...};

这个例子运行良好。我想在 node.js 的 CoffeeScript 文件中重用“Sim”。所以我试试这个(从 jasmine-node 调用):

sjs = require "./sim-0.26.js"

mysim = new sjs.Sim()

其中 sim-0.26.js 与包含此代码的文件 testsim.spec.coffee 位于同一目录中。当我调用它时使用:

jasmine-node --coffee ./testsim.spec.coffee

我明白了:

mysim = new sjs.Sim();
^
TypeError: undefined is not a function

我怀疑我做错了很多事。我对这一切都很陌生。

有什么想法吗?

最佳答案

除非 Sim 被添加到 exports 中,否则它将在 required 时不可用 - 请参阅 the docs on modules有关需要编写 Node.js 模块的方式的更多信息。

如果这需要同时在浏览器和 Node 中工作,那么只需将其添加到 sim.js 的代码中:

var root = typeof exports === "object" ? exports : window;

root.Sim = Sim;

关于javascript - 从 CoffeeScript 调用 JavaScript "new",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11998877/

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