Я просмотрел все другие (отличные) ответы на SO (особенно это: 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
Выглядит хорошо! Я не вижу в этом ничего плохого. – Linuxios
Технически вам не нужно 'm' - вы можете просто использовать' make' напрямую. – josh3736