我已经浏览了关于 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>
这输出:
A toyota corolla has been create
A toyota corolla has been created
A honda civic has been created
那么你认为它是闭包的有效用例(即使用相同的代码库创建多个工厂)吗?或者我可以使用更好的东西来实现同样的目标吗?
请注意,问题不是关于闭包的技术实现,而是更多关于应用程序设计/开发中的有效用例。
谢谢。