【发布时间】:2013-10-08 18:29:54
【问题描述】:
在Module Pattern example from Addy Osmani 中,将私有函数分配给变量,如下例所示:
var myNamespace = (function () {
var myPrivateVar, myPrivateMethod;
// A private counter variable
myPrivateVar = 0;
// A private function which logs any arguments
myPrivateMethod = function( foo ) {
console.log( foo );
};
return {
// A public function utilizing privates
myPublicFunction: function( bar ) {
// Increment our private counter
myPrivateVar++;
// Call our private method using bar
myPrivateMethod( bar );
}
};
})();
我会简单地将私有函数写为:
function myPrivateMethod( foo ) {
console.log( foo );
};
如果函数不用作委托,是否有任何理由将函数分配给变量?我正在查看一些始终使用这种模式的代码,但我发现它很难遵循。例如:
var _initializeContext = function() { // many lines of code }
【问题讨论】:
-
var functionName = function() {} vs function functionName() {} 或许可以回答这个问题。两种形式之间的技术区别在于是否提升了
function或仅提升了var。但是,它已经处于范围的顶端,主要是一种风格选择。 -
在这种情况下,两种编写私有函数的方式没有显着差异。这只是个人风格。我没有看到您在“显示模块模式”部分中提到的语法,它来自“模块模式”部分。
-
@Barmar 你说得对,我编辑了标题。
标签: javascript revealing-module-pattern