访问jQuery范围内的函数

Access of function in jQuery scope

本文关键字:函数 范围内 jQuery 访问      更新时间:2023-09-26

我想在jQuery作用域之外构建一个函数:

(function($) {
  function MyObject() {
    console.log('foo');
  };
}(jQuery));
var $my_object = new MyObject();

但是函数MyObject不可访问:

ReferenceError: MyObject is not defined

然而,如果我在作用域中构建我的函数,它是工作的:

(function($) {
  function MyObject() {
    console.log('foo');
  };
  var $my_object = new MyObject();    
}(jQuery));
foo

如何在作用域外访问MyObject ?

我可能不建议这样做但是你可以做你想做的事情通过将函数作为对象的一部分返回并将IIFE分配给一个变量,就像这样

var library = (function ($) {
    var exports = {};
    var private = 'see you cant get this';
    var MyObject = exports.MyObject = function (_in) {
        console.log(_in);
    };
    var another_func = exports.sum = function (a, b) {
        console.log(a + b);
    };

    return exports;
}(jQuery));

library.MyObject('foobar'); // "foobar"
library.sum(3, 5);  // 8
console.log(private);  // Uncaught ReferenceError: private is not defined

虽然我不知道你为什么要这样做…也许这有帮助

// Define Class globally
// window.MyObject also works
var MyObject = (function($) {
// Passes jQuery in
  return function () {
    console.log('foo');
  };
}(jQuery));
var $my_object = new MyObject();