#javascript #jquery
#javascript #jquery
Вопрос:
Я хочу создать функцию вне области jQuery:
(function($) {
function MyObject() {
console.log('foo');
};
}(jQuery));
var $my_object = new MyObject();
Но функция MyObject недоступна :
Ошибка ссылки: MyObject не определен
Однако, если я создаю свою функцию в области, она работает:
(function($) {
function MyObject() {
console.log('foo');
};
var $my_object = new MyObject();
}(jQuery));
foo
Как получить доступ к MyObject за пределами области?
Комментарии:
1.
window.MyObject = function()...
?2. Это невозможно сделать, если вы не определяете функцию в глобальной области видимости (например, как плагин jQuery).
4. технически это возможно с помощью этого шаблона: jsfiddle.net/LVPyL/1
Ответ №1:
Я бы, вероятно, не рекомендовал это, но в принципе вы можете делать то, что хотите, возвращая функции как часть объекта и присваивая 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
Ответ №2:
Хотя я не знаю, почему вы хотите это сделать.. Может быть, это помогает
// Define Class globally
// window.MyObject also works
var MyObject = (function($) {
// Passes jQuery in
return function () {
console.log('foo');
};
}(jQuery));
var $my_object = new MyObject();