0

在我的 rails 项目中,我编写了一个 javascript 函数来覆盖另一个文件中定义的另一个对象的默认行为。执行此操作的行看起来像:

window.someObject.methodToOverride = function...

最初这会给我一个cannot set property 'methodToOverride' of undefined错误,我假设这与时间问题有关(someObject尚未设置)。我能够通过将其放入 jQuery$(document).ready函数中来解决该问题,但是虽然这可行,但对我来说似乎有点 hacky。

有一个更好的方法吗?

4

1 回答 1

1

这听起来像您正在寻找require.js。它的作用是让您以模块化方式设置代码,定义哪个模块取决于哪个模块。在您的情况下,一旦设置好,通过放置一个包装器,例如

require(["someObject"], function (someObject) {
    someObject.methodToOverride = function...
}

当你使用这个函数时,require.js 会动态加载你的 someObject 文件,当它完全加载时,将 someObject 作为参数传递给你提供的函数。它可以处理更复杂的示例,具有任何级别和任何数量的依赖项,根据需要加载它们不超过一次。

您可以在整个 SO 中找到有关 require.js 的更多信息,例如:

于 2013-02-14T23:23:08.120 回答