я ответил на один вопрос о замыканиях здесь в SO с этим образцом:
function Constructor() {
var privateProperty = 'private';
var privateMethod = function(){
alert('called from public method');
};
return {
publicProperty: 'im public',
publicMethod: function(){
alert('called from public method');
},
getter: privateMethod
}
}
var myObj = new Constructor();
//public
var pubProp = myObj.publicProperty;
myObj.publicMethod();
myObj.getter();
//private - will cause errors
myObj.privateProperty
myObj.privateMethod
пользователь прокомментировал мой ответ, сказав:
Кроме того, если ваша функция явно возвращает объект, не рекомендуется называть его с помощью new, потому что это вводит в заблуждение - при использовании нового вы ожидаете, что результатом будет экземпляр конструктора
Я обычно создаю объекты с помощью new. но почему это не хорошая практика? это похоже на использование новых и не использование новых возвратов то же самое. Каков правильный способ создания объектов из замыканий?