简体   繁体   中英

Access of function in jQuery scope

I want to build a function outside a jQuery scope:

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

But function MyObject is not accessible :

ReferenceError: MyObject is not defined

However, if i build my function in the scope, it's working:

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

foo

How access to MyObject outside the scope ?

I would probably not recommend it but you can basically do what you want by returning the functions as part of an object and assigning the IIFE to a variable like this

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

Although I don't know why you want to do it.. Maybe this helps

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

}(jQuery));
var $my_object = new MyObject();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM