【发布时间】:2014-07-02 05:34:35
【问题描述】:
http://addyosmani.com/resources/essentialjsdesignpatterns/book/#modulepatternjavascript
我正在浏览上面的杰作。我仍然无法从上面的文章中得到两件事。
var myRevealingModule = (function () {
var privateVar = "Ben Cherry",
publicVar = "Hey there!";
function privateFunction() {
console.log( "Name:" + privateVar );
}
function publicSetName( strName ) {
privateVar = strName;
}
function publicGetName() {
privateFunction();
}
// Reveal public pointers to
// private functions and properties
return {
setName: publicSetName,
greeting: publicVar,
getName: publicGetName
};
})();
myRevealingModule.setName( "Paul Kinlan" );
相关问题: JavaScript design pattern: difference between module pattern and revealing module pattern?
我从上述问题中理解了很多部分。任何人都可以将上面的revealing module pattern 转换为传统的module pattern,以便我可以看到差异。
【问题讨论】:
-
据我所知,
revealing module pattern只是module pattern的另一种方式。如果您想要另一种方法,请查看node.js模块 (commonjs) 或amd模块。这更像是modules(至少在我看来),因为没有任何明确的闭包。虽然最后基本上是一样的,只是为你生成了一些代码。 -
另外,关于您在上面发布的代码的一点。
publicVar不公开,因为myRevealingModule.greeting不是指针,如下所示:jsfiddle.net/Xr2kB
标签: javascript oop design-patterns module-pattern revealing-module-pattern