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 加载匿名函数?
答案 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