在JavaScript中的模块模式中“Immediately-Invoked Function Expressions”(也称为自执行匿名函数)被用作返回对象的自执行函数。 自执行函数如何隐藏私有变量并仅显示返回的对象。为什么在普通的JavaScript函数中不会发生这种情况? 因此,在下面的迷你模块中,为什么我们不能实现相同的封装概念而没有封闭()()?为什么在Javascript模块模式中使用自执行的匿名函数?
var Module = (function() {
var privateVariable = "foo",
privateMethod = function() {
alert('private method');
};
return {
PublicMethod: function() {
alert(privateVariable);
privateMethod();
}
};
})();
让您的头脑围绕什么是分配应该给你必要的了解50%。另外50%来自对[关闭]的理解(https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Closures)。如果您仍然遇到麻烦,请阅读Douglas Crockford的“[JavaScript中的私人成员](http://javascript.crockford.com/private.html)”。 – 2013-05-05 14:29:37