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)
那么你认为它是闭包的有效用例(即使用相同的代码库创建多个工厂)吗?或者我可以使用更好的东西来实现同样的目标吗?
请注意,问题不在于闭包的技术实现,而在于应用程序设计/开发中的有效用例.
谢谢.
是的,保持变量私有是闭包的有效用途。它允许您对变量进行私有访问,而无需将其设为公共成员。
有关其他示例,请参阅此参考:http://www.crockford.com/javascript/private.html