【问题标题】:How to make a JS object available across multiple files如何使 JS 对象在多个文件中可用
【发布时间】:2026-01-15 04:25:01
【问题描述】:

我是一个在 Rails 应用程序上工作的 js 菜鸟。我在我的一个 javascript 文件中定义了一个有用的 JS 函数,我希望它可以在其他文件中调用。然而,事实并非如此。这是我的情况的简化示例...请注意,我使用的是 CoffeeScript(但 AFAIK 应该没有区别):

#file: app/assets/javascripts/foos.js.coffee
testFoo: ->
  alert 'Foo'

#file: app/assets/javascripts/bars.js.coffee
jQuery ->
  testFoo()

这不起作用,在控制台中我得到:testFoo is not defined

这两个文件都包含在页面中,如果我在其中任何一个中放置警报或控制台日志,页面都会按预期响应。我觉得我必须在这里忽略一些非常明显的东西......它是什么?

【问题讨论】:

  • 当您说“两者都包含在页面中”时,您的意思是您的 HTML 中有两个脚本元素吗?如果是,请检查排序和拼写等。
  • @RayToal:CoffeeScript 将所有内容包装在 (function() { ... })() 包装器中,以防止污染全局命名空间。
  • @muistooshort 呸,当然。谢谢。
  • 查看以下主题:*.com/questions/4214731/…

标签: javascript ruby-on-rails file scope coffeescript


【解决方案1】:

简而言之,试试这个:

root = exports ? this
root.foo = -> alert 'Foo'

【讨论】: