如何在另一个Jquery文件中访问范围内的JQuery函数?

时间:2011-08-25 08:09:07

标签: javascript jquery

我正在尝试将一个大的JQuery文件重构为较小的文件,但其中一个原因是我必须能够在另一个JQuery文件中调用函数,但是我无法让它工作。那么如何更改此代码以便我可以从File2.js中调用File1.js中的someFunction?

//File1.js
(function (s_diary, $, undefined) {

function someFunction()
{
    alert("Yay");
}

} (window.s_diary= window.s_diary|| {}, jQuery));

//File2.js
(function (s_one, $, undefined) {

function someFunction()
{
    s_diary.someFunction();
}

} (window.s_one= window.s_one|| {}, jQuery));

2 个答案:

答案 0 :(得分:3)

更仔细地看一下,格式化,评论和更改以显示点:

(function (s_diary, $, undefined) {
  // the someFunction function is private to this function
  // it has the same scope as a function parameter or local var
  function someFunction() {
    alert("Yay");
  }
  // but since all functions are just objects...
  // someFunction is now *exposed* as window.s_diary.someFunction
  // see below for why window.s_diary is modified
  s_diary.someFunction = someFunction
}(window.s_diary = window.s_diary || {}, jQuery));

请注意,最后(...)调用先前定义的函数对象,并传入名称为window.s_diary的对象(如果需要,创建它)。然后函数中“window.s_diary”对象被突变。请记住,window全局命名空间,因此可用于单个页面上下文中的所有scrips 。 (只需确保它们以正确的顺序运行。)

快乐的编码。

答案 1 :(得分:2)

也许你可以这样做,如果我没记错的话,它被称为“揭示模块模式”:

var file1 = (function (s_diary, $, undefined) {

function someFunction()
{
    alert("Yay");
};
return{
    someFunction: someFunction
};
} ());

var file2 = (function (s_one, $, undefined) {

function someFunction()
{
    file1.someFunction();
}

} (window.s_one= window.s_one|| {}, jQuery));