Javascript jQuery范围内函数的访问
我想在jQuery范围之外构建一个函数:Javascript jQuery范围内函数的访问,javascript,jquery,Javascript,Jquery,我想在jQuery范围之外构建一个函数: (function($) { function MyObject() { console.log('foo'); }; }(jQuery)); var $my_object = new MyObject(); 但函数MyObject不可访问: ReferenceError:未定义MyObject 但是,如果我在作用域中构建我的函数,它会工作: (function($) { function MyObject() { cons
(function($) {
function MyObject() {
console.log('foo');
};
}(jQuery));
var $my_object = new MyObject();
但函数MyObject不可访问:
ReferenceError:未定义MyObject
但是,如果我在作用域中构建我的函数,它会工作:
(function($) {
function MyObject() {
console.log('foo');
};
var $my_object = new MyObject();
}(jQuery));
福
如何在范围之外访问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();
window.MyObject=function()…
?除非在全局范围内定义函数(例如,作为jQuery插件),否则无法执行此操作。从技术上讲,可以使用此模式: