我已經看過所有其他(優秀)答案(尤其是這個: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