0

我有一个 JavaScript 文件,它返回公共方法。这个 JavaScript 文件我不是在开始时加载,而是仅在需要时才预加载。例子:

(function () {
  // Some privat vars and functions
  var something = 'Something goes well!';

  function doSomething() {
    console.log(something);
  }  

  return {
    doSomething: doSomething,
    doAnotherThings: doAnotherThing
  }
})();

我用 jQuery 构建了一个函数,在我真的需要时预加载我的 JavaScript 文件。这是一个函数:

function load(file, callback) {
  var head = $("html").closest("head"),
      tag = $("<script />", {
        type: "text/javascript"
      });

  tag.on("load", callback);
  tag.attr("src", file);

  head.append(tag);
}

我的问题是如何将刚刚加载的脚本返回的公共对象作为参数传递给回调?因为我希望尽快使用这些公共方法......</p>

4

3 回答 3

0

您可以在加载文件时触发事件,然后让回调函数监听该自定义事件。

您可以使用 jQuery 触发方法 - http://api.jquery.com/trigger/

于 2012-07-20T12:08:42.960 回答
0

您只需要将匿名的返回值分配function给一个变量。然后,您将能够在您的 中使用它callback function,例如

var loaded = (function () {
    return {
        foo: function () {

        }
    };
})();

在您的内部callback function,您可以使用loaded.foo.

当您使用 jQuery 时,我建议您使用$.getScript()它来获取 JS 文件。这将使您的代码更简单,即

function load(file, callback) {
    $.getScript(file, callback);
}

然后你可以像这样使用它:

load('js/test.js', function () {
    console.log(loaded.foo());
});
于 2012-07-20T12:20:42.217 回答
0

如果您已经在使用 jQuery,您可以使用内置的 $.fn.get,它会在加载成功时触发回调:http: //api.jquery.com/jQuery.get/

(虽然也许你想滚动你自己的加载函数呢?)

于 2012-07-20T12:18:05.187 回答