我的基本设置是匿名自调用函数下的一大堆Javascript:
(function () {
...
})();
我的问题是我似乎无法通过DOM选项卡访问此ASI函数中的对象。我尝试了以下两种方法:
var MYAPP = function () {
...
};
var MYAPP = (function () {
...
})();
第一个根本没发射。第二个只是说DOM选项卡中的MYAPP为undefined
。
有解决方法吗?
答案 0 :(得分:2)
在您的第一个版本中,您只是创建一个名为MYAPP
的函数,但您没有执行它。
在第二个版本中,您的函数将被执行,其结果将分配给MYAPP
。但是你的函数似乎没有返回任何内容,因此MYAPP
保持未定义。
有关此模式的说明,请参阅YUIBlog上的A Javascript Module Pattern。他们的例子是这样的:
YAHOO.myProject.myModule = function () {
return {
myPublicProperty: "I'm accessible as YAHOO.myProject.myModule.myPublicProperty.",
myPublicMethod: function () {
YAHOO.log("I'm accessible as YAHOO.myProject.myModule.myPublicMethod.");
}
};
}(); // the parens here cause the anonymous function to execute and return
因此,您的函数基本上返回一个包含所有公共成员的对象。然后,您也可以使用Firebug访问它们。