jQuery函数范围和访问范围之外的函数

时间:2017-01-11 09:39:29

标签: javascript jquery function

我有一个带有以下结构的jquery文件::

(function($) {

var MYTEST= {

       init: function() {
          alert('Hello World');
       }
       exec: function() {
            alert('function executed');
       }
    }

  $(function() {
     MYTEST.init();
  })

}(jQuery))

我想访问第二个功能,即' exec'在另一个文件中或jQuery范围之外。明确这样的事情::

 (function($) {

        var MYTEST= {
        .
        .
        }

 }(jQuery))

    $(function() {
         MYTEST.exec();
    })

我知道上面的代码不起作用,只是想知道。如何在外面访问该功能(我实际上并不知道用javascript来解释这种情况的具体行话,对不起)

2 个答案:

答案 0 :(得分:1)

简单的答案是将全局范围与命名空间一起使用,这样您就可以在不同的文件中使用该对象。

(function($, win) {

    win.MYTEST= {

       init: function() {
          alert('Hello World');
       }
       exec: function() {
            alert('function executed');
       }
    }

}(jQuery, window))

如果您正在使用ES6并导出&导入你可以使用模块模式(显然ES6不是必须的,但它更好):

const MYTESTModule = (function($) {

    return MYTEST= {

       init: function() {
          alert('Hello World');
       },
       exec: function() {
            alert('function executed');
       }
    };

}(jQuery));

export default MYTESTModule;

答案 1 :(得分:0)

尝试从代码中返回函数exec。这称为模块模式。

var MyTESTModule = (function($) {

   var MYTEST= {
       init: function() {
          alert('Hello World');
       }      
    }

   $(function() {
      Starling.init();
   })
   return {
    exec: function() {
       alert('function executed');
    }
   }
}(jQuery));
MYTESTModule.exec();