Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 跨文件重写js函数的计时问题_Javascript_Jquery - Fatal编程技术网

Javascript 跨文件重写js函数的计时问题

Javascript 跨文件重写js函数的计时问题,javascript,jquery,Javascript,Jquery,在我的rails项目中,我编写了一个javascript函数来覆盖另一个文件中定义的另一个对象的默认行为。这行代码看起来像: window.someObject.methodToOverride = function... 最初,这会给我一个无法设置属性“methodToOverride”的未定义的错误,我假设这与时间问题有关(因为someObject尚未设置)。我可以通过将它放入jQuery$(document.ready函数中来解决这个问题,但尽管它可以工作,但对我来说似乎有点不太正常 有

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

window.someObject.methodToOverride = function...
最初,这会给我一个
无法设置属性“methodToOverride”的未定义的
错误,我假设这与时间问题有关(因为
someObject
尚未设置)。我可以通过将它放入jQuery
$(document.ready
函数中来解决这个问题,但尽管它可以工作,但对我来说似乎有点不太正常


有更好的方法吗?

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

require(["someObject"], function (someObject) {
    someObject.methodToOverride = function...
}
当您使用此函数时,require.js将动态加载您的someObject文件,当它完全加载时,将someObject作为参数传递到您提供的函数中。它可以处理更复杂的示例,具有任意级别和任意数量的依赖项,根据需要加载它们不超过一次

您可以在require.js上找到更多信息,例如:


这取决于对象的定义方式。如果对象也是在documentready上定义的,那么使用documentready是正确的方法。@KevinB Cool,这太有意义了。回顾并再次查看这些文件,我没有注意到对象是在jQuery(function($){…})中设置的,在这种情况下ready是绝对正确的。谢谢有趣的是,我会把它存档以备将来参考。在本例中,问题是我没有意识到原始对象是何时定义的。