2014-02-09 6 views
0

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

$(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

Не могли бы вы поместить 'myApp' в DOM самостоятельно? –

+0

Наличие синтаксиса 'myWholeApp' как глобального объекта не является проблемой. – Bergi

+0

Я мог бы это сделать, но я работаю, чтобы изолировать все основные свойства и методы внутри анонимных функций и использовать только DOM для управления элементами DOM. – Vish

ответ

1

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

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

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

(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 

 Смежные вопросы

  • Нет связанных вопросов^_^