0

采用了一些 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 中的部分本质上应该会导致它等到这些其他部分被加载。我可能没有得到真正简单的东西,但想看看是否有任何关于下一步要看什么的想法?

提前谢谢

4

1 回答 1

1
<script type="text/javascript" src="/first.js"></script>
<script type="text/javascript" src="/second.js"></script>

第一个.js:

arc = {
    event_handler: {
        do_something: function(){
            alert('do something');
        }
    }
};

第二个.js:

$(document).ready(function(){
    $('.some').on('click', arc.event_handler.do_something);
});
于 2012-11-02T12:06:51.227 回答