我已经看过所有其他(优秀)答案(尤其是这个:How do JavaScript closures work?),但我希望你对我对这个概念的理解有所反馈。这是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
那么你认为其倒闭的有效使用情况下(即创建多个工厂使用相同的代码库)?或者我可以使用更好的东西来实现相同的目标?
请注意,问题不在于关闭的技术实现,更多关于应用程序设计/开发中有效用例的问题。
谢谢。
对我来说没关系。 – Almo 2012-07-16 00:23:01
看起来不错!我没有看到任何错误。 – Linuxios 2012-07-16 00:24:28
从技术上讲,你不需要'm' - 你可以直接使用'make'。 – josh3736 2012-07-16 00:33:33