这是javascript关闭的有效用例吗?

Sof*_*Guy 9 javascript closures application-design

我已经查看了SO上的所有其他(优秀)答案(尤其是:JavaScript关闭如何工作?)但我想要您对我对该概念的理解的反馈.

据我所知,一个用例是隐藏私有方法的实现,不受公共访问.

我想到的另一个是它作为工厂发电机:

<script>

function carFactory( make ) {

    var m = make;
    return { manufacture: function ( model ) 

        {console.log("A " + m + " " + model + " has been created");}

    }
}

toyotaFactory = carFactory("toyota");
hondaFactory = carFactory("honda");

toyotaFactory.manufacture("corolla");
toyotaFactory.manufacture("corolla");
hondaFactory.manufacture("civic");

</script>
Run Code Online (Sandbox Code Playgroud)

这输出:

A toyota corolla has been create
A toyota corolla has been created
A honda civic has been created 
Run Code Online (Sandbox Code Playgroud)

那么你认为它是闭包的有效用例(即使用相同的代码库创建多个工厂)吗?或者我可以使用更好的东西来实现同样的目标吗?

请注意,问题不在于闭包的技术实现,而在于应用程序设计/开发中的有效用例.

谢谢.

jfr*_*d00 4

是的,保持变量私有是闭包的有效用途。它允许您对变量进行私有访问,而无需将其设为公共成员。

有关其他示例,请参阅此参考:http://www.crockford.com/javascript/private.html