我知道像这样的模块:
function User(){
var username, password;
function doLogin(user, pw){
username = user;
password = pw;
};
var publicAPI = {
login: doLogin
};
return publicAPI;
}
内部有一个闭包:
doLogin
,并且正在记住username
内的变量password
和User
的值,这使它成为“闭包”。我不太了解的是,是否每当使用闭包时都使用模块模式?或者将User
的函数保存在像var User = function(){...
这样的变量中不是一个模块...请记住我正在学习js。 最佳答案
您已经为User
实现了工厂功能。
您正在“几乎”使用显示模块模式。大多数人会说显示模块模式需要立即调用。模块模式通常用于代码组织。相反,您在这里拥有的是对象工厂。
(显示)模块模式(和其他模式)使用闭包来实现私有(private)状态的封装。
每当定义函数时,都会创建一个闭包。它们是JavaScript的语言功能,可简化函数的使用。