以随机顺序加载的Javascript无法初始化

时间:2012-10-10 13:27:54

标签: javascript ecmascript-5

我以未确定的顺序加载我的javascript。我有一个名称空间函数来注册名称空间。例如,可以这样写:

"com.stackoverflow.question".namespace(new function() {
    this.sayHelloTo = function(text) { alert("Hello" + text); }
});

不幸的是,namespace.js并不总是首先加载,因为加载顺序是随机的,但其他脚本使用命名空间函数。有没有办法实现这一点而不会得到错误“.namespace”不是一个函数?

所以必须有一种方法可以在以后初始化sayHelloTo定义,我有一个加载的事件。所以即将发表的声明有效,但我认为这非常难看。

var postInit = postInit || [];
postInit.push(function() {
  "com.foo.bar".namespace(new function() {
      this.sayHelloTo = function(text) { alert(text); }
  });
}); 

当事件发生时:

list.foreach(function(k, v) { v.call();  });  

有没有更好的方法来实现这一目标?

1 个答案:

答案 0 :(得分:1)

使用AMD:看看http://requirejs.org/。或者,common.js可能会根据用途而有效。