Передача объекта из анонимной функции в функцию готовности 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