从DOM ready函数中的匿名函数传递对象

时间:2014-02-09 19:46:35

标签: javascript jquery dom anonymous-function module-pattern

Q1:如何将 myApp对象匿名函数加载到 DOM ready函数中。我知道传递对象的一种方法是使用 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);

问题3:我知道它不可能,但在DOM加载后是否有 hack / trick 加载匿名函数?

1 个答案:

答案 0 :(得分:1)

可能是这样的:

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

关于问题的第二部分:在括号内部或外部放置调用并没有什么区别。有些编码员喜欢一种变体而不是另一种。 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