Сделать функцию доступной вне замыкания

#javascript #closures

#javascript #замыкания

Вопрос:

Есть ли способ сделать функцию, созданную внутри замыкания, доступной вне замыкания? Я работаю с приложением AIR, и мне нужно предоставить доступ к specialFunction() AIR, но закрытие не позволяет этому произойти.

 (function () {
    ... a bunch of code ..

    function specialFunction() {
        .. some code
    }
}()); 
  

Ответ №1:

Вы можете назначить функцию глобальному объекту (который находится window в браузерах):

 (function () {
    ... a bunch of code ..

    window.specialFuncton = function() {
        .. some code
    }
}());
  

Это делает ее доступной во всем мире.

Если приложению AIR также необходим доступ к другим функциям, то лучше создать пространство имен для этих функций:

 var funcs = {}; // global

(function () {
    ... a bunch of code ..

    funcs.specialFuncton = function() {
        .. some code
    }
}());