Передача объекта из анонимной функции в функцию готовности DOM

Q1: Как я могу загрузить объект myApp из анонимной функции в функцию готовности DOM. Я знаю, что один из способов передачи объекта - это использование window.myApp = myApp; внутри анонимной функции, но это выставляет объект myApp как глобальный объект.

$(function(){
    //Load myApp inside here
});

(function(){
   var myApp = {
     //with properties inside
   }
}());

Q2: Кроме того, я видел следующие скобки внутри и скобки снаружи. Что они делают?

(function(){
   var myApp = {
     //with properties inside
   }
}(brackets inside))(brackets outside);

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

1 ответ

Может быть так:

(function () {
    var myApp = {
        //with properties inside
    }
    $(function () {
        // document is ready AND myApp is accessible
        myApp.init();
    });
}());

Что касается 2-й части вашего вопроса: размещение вызова внутри или вне скобок не имеет значения. Некоторые кодеры предпочитают один вариант другому. Подробности здесь.

(function(){ /* do something */ })(); // invocation outside parenthesis
(function(){ /* do something */ }()); // invocation inside parenthesis

Если вы спрашиваете, что делает ()() делать; он вызывает функцию, которая возвращает функцию, и вызывает возвращенную функцию. Рассмотрим этот пример и его вывод:

(function () {
    console.log("anonymous outer function");
    return function () {
        console.log("anonymous inner function");
    }
})()();

// output:
// anonymous outer function
// anonymous inner function 
Другие вопросы по тегам