РЕДАКТИРОВАТЬ
С количеством ответов, говорящих "вы можете делать личные вещи!"ниже, я собираюсь добавить это также к вершине:
Я знаю, что вы можете эмулировать закрытые переменные внутри замыкания.Это не то, что я спрашиваю.Я спрашиваю, учитывая два приведенных ниже примера, где я «экспортирую» ВСЕ из замыкания, какова принципиальная разница между этими двумя примерами.
Учитывая эти два метода создания объектов / методов:
var test = {}
test = (function(){
var a_method = function(print_me){
return "hello "+print_me;
}
return {print_me: a_method};
})();
test.print_me2 = function(print_me2){
return "hello "+print_me2;
}
test.print_me('world');
>>> returns "hello world"
test.print_me2('world');
>>> returns "hello world"
Я понимаю, что первый метод позволяет использовать закрытые переменные (которые я, как разработчик Python, не очень люблю использовать), но оба мне кажутся довольно эквивалентными, только первыйвыглядит «круче» (как и во всех больших javascript-программах, кажется, что люди так делают), а второй способ выглядит очень пассивно.
Итак, какая разница?
IЗдесь вы просмотрели закрывающие вопросы - большинство из них сосредоточены вокруг того, что или почему вы их используете;Я понимаю их полезность, я просто хочу знать, почему вы делаете первое по сравнению со вторым и какие у него есть преимущества.
Я бы предпочел неопровержимые доказательства, а не догадки - не искать "вот каккрутые дети делают это "или" я слышал, что mozilla лучше использует память, когда вы используете замыкание ", но это скорее качественное свидетельство того, что одно из них" лучше ", чем другое.