采用了一些 javascript 代码,我将这些代码重新排列成更小的文件,以使其更易于管理;我从来都不是一名全职的 javascript 工程师,但我已经使用它一段时间了,但对它感觉不太舒服。
我有一个对象文字来处理我们网站的大部分控制器级别的活动。我们重新排列了代码并将其放在不同的文件中,但是有一个特定的对象在其中我得到了一个未定义的错误。查看文件的加载顺序,它出现在 jQuery 片段之前。将这个对象字面量包装在另一个 jQuery onready 包装器中也解决了这个问题。如果我通过这样的方式进行检查:
if (typeof arc.event_handler === "undefined"){
alert("something is undefined");
}else{
alert("something is defined");
}
然后使用 jQuery onready 包装,它被定义但没有它是未定义的。喜欢(我知道这段代码可以在有或没有 jQuery onload 的情况下工作)
// file-1.js
var arc={};
$(document).ready(function(){
arc.event_handler={
do_something: function(){
alert('do something');
}
}
});
然后在不同的文件中
// later in load order z-file.js
$(document).ready(function(){
if (typeof arc.event_handler === "undefined"){
alert("something is undefined");
}else{
alert("something is defined");
}
$('.some').on('click',function(){
arc.event_handler.do_something();
});
});
我有点不知所措是什么导致了这种行为。我的理解是,即使是一个外部文件,jQuery onready 中的部分本质上应该会导致它等到这些其他部分被加载。我可能没有得到真正简单的东西,但想看看是否有任何关于下一步要看什么的想法?
提前谢谢