采用了一些javascript代码,我将其重新整理成较小的文件,以使其更易于管理;我从未成为一名全职的javascript工程师,但已经使用了一段时间,但对它感觉不太舒服。
我有一个对象文字,可以处理我们网站的大部分控制器级活动。我们重新安排了代码并将其放在不同的文件中,但是有一个特定的对象,我得到一个未定义的错误。查看文件的加载顺序,它出现在jQuery之前。将此对象文字包装在另一个jQuery onready包装器中也可以解决问题。如果我通过某种形式检查这样:
if (typeof arc.event_handler === "undefined"){
alert("something is undefined");
}else{
alert("something is defined");
}
然后使用jQuery onready wrap,它被定义但没有它是未定义的。就像(我知道这个代码可以使用或不使用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中的部分应该基本上使它等到这些其他部分被加载。我可能没有得到一些非常简单的东西,但想看看下一步看下一步有什么想法吗?
事先提前答案 0 :(得分:1)
<script type="text/javascript" src="/first.js"></script>
<script type="text/javascript" src="/second.js"></script>
first.js:
arc = {
event_handler: {
do_something: function(){
alert('do something');
}
}
};
second.js:
$(document).ready(function(){
$('.some').on('click', arc.event_handler.do_something);
});