我知道像这样的模块:

function User(){
    var username, password;

    function doLogin(user, pw){
        username = user;
        password = pw;
    };
    var publicAPI = {
        login: doLogin
    };
    return publicAPI;
}

内部有一个闭包:doLogin,并且正在记住username内的变量passwordUser的值,这使它成为“闭包”。我不太了解的是,是否每当使用闭包时都使用模块模式?或者将User的函数保存在像var User = function(){...这样的变量中不是一个模块...请记住我正在学习js。

最佳答案

您已经为User实现了工厂功能。

您正在“几乎”使用显示模块模式。大多数人会说显示模块模式需要立即调用。模块模式通常用于代码组织。相反,您在这里拥有的是对象工厂。

(显示)模块模式(和其他模式)使用闭包来实现私有(private)状态的封装。

每当定义函数时,都会创建一个闭包。它们是JavaScript的语言功能,可简化函数的使用。

09-12 07:03
查看更多