返回揭示模块模式
Return in Revealing Module Pattern
我在这里读了Addy关于揭示模块模式的书。但是,如果执行示例代码,它实际上返回undefined。一个解决方案是在每个被调用的函数之前添加"return"。如果使用RMP,我应该为每个被调用的函数添加返回吗?这是正确的方法吗?我错过了什么?
var myRevealingModule = (function () {
var privateCounter = 0;
function privateFunction() {
privateCounter++; <--need to add return
}
function publicFunction() {
publicIncrement(); <-- need to add return
}
function publicIncrement() {
privateFunction(); <--need to add return
}
function publicGetCount(){
return privateCounter;
}
// Reveal public pointers to
// private functions and properties
return {
start: publicFunction,
increment: publicIncrement,
count: publicGetCount
};
})();
myRevealingModule.start(); <-return undefined
http://addyosmani.com/resources/essentialjsdesignpatterns/book/revealingmodulepatternjavascript
问题与RMP无关,而与函数和返回值有关。
为什么你期望一个不返回任何东西的方法实际返回的不是undefined?
仔细看看这里。start
实际上调用了publicFunction
,但后者的代码体没有返回任何东西。
但是你调用它并期望得到一个值。
你的问题的答案是:是的,如果你想从函数返回一个值,你必须返回它。在这个特殊的例子中,他们有一个方法count
来返回电流值。另外两个方法仅用于控制计数器。
相关文章:
- Javascript,访问一个主要对象模块模式中的每个对象
- 模块模式和这个
- 显示模块模式在Knockout中设置模型的新实例
- Javascript中的模块模式和揭示模块模式是否仅在创建API时有用;s
- 用于多个选项卡和模块化的knockoutjs设计模式
- JavaScript模块模式-如何在使用对象/函数之前激发构造函数/init函数
- TypeScript代码类似于揭示模块模式结构
- 为什么在javascript中的模块模式中实现Lazy函数时范围会发生变化
- JavaScript:模块模式差异
- 显示模块模式中的私有成员
- 如何将window.setTimeout与javascript和模块模式一起使用
- j查询模块模式未命名 |如何访问“$”
- 挖空和显示模块模式的数据绑定问题
- 传递参数时如何避免模块模式中的 getter/setter 函数
- 将变量传递给 Javascript 模块化模式方法
- JavaScript 模块模式给出了意想不到的结果
- 从模块模式开始
- 试图通过模块模式在DOM元素上实现change()事件
- 揭示模块模式、KnockoutJS和CoffeeScript
- JavaScript 设计模式:模块模式和揭示模块模式之间的区别