【发布时间】:2013-05-03 22:42:43
【问题描述】:
在 JavaScript 的模块模式中,“立即调用函数表达式”(也称为自执行匿名函数)用作返回对象的自执行函数。 自执行函数如何隐藏私有变量而只公开返回的对象。为什么普通的 JavaScript 函数不会发生这种情况? 那么在下面的小模块中,为什么没有封闭的()()就不能实现同样的封装概念呢?
var Module = (function () {
var privateVariable = "foo",
privateMethod = function () {
alert('private method');
};
return {
PublicMethod: function () {
alert(privateVariable);
privateMethod();
}
};
})();
【问题讨论】:
-
把注意力集中在分配的内容上应该会给你 50% 的必要理解。另外50%来自对closures的理解。如果您仍有问题,请阅读 Douglas Crockford 的“Private Members in JavaScript”。
标签: javascript module closures