我知道像这样的模块:
function User(){
var username, password;
function doLogin(user, pw){
username = user;
password = pw;
};
var publicAPI = {
login: doLogin
};
return publicAPI;
}
内部有一个闭包:doLogin
,并记住 内部的变量
,是什么让它成为“闭包”。我不太明白的是,如果每当我们使用闭包时,我们都是在使用模块模式吗?或者一旦我将 username
和 password
的值用户User
的函数保存在 var User = function(){...
之类的变量中就不是模块...请记住我正在学习js。
最佳答案
您已经为 User
实现了一个工厂函数。
您“几乎”使用了揭示模块模式。大多数人会说需要立即调用揭示模块模式。模块模式通常用于代码组织。你在这里拥有的是一个对象工厂。
(揭示)模块模式(和其他)使用闭包来实现私有(private)状态的封装。
只要定义了一个函数,就会创建一个闭包。它们是 JavaScript 的一种语言特性,可以更轻松地使用函数。
关于javascript - 闭包和模块有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33825846/