создание объектов из закрытия JS: следует ли использовать ключевое слово «новое»?

я ответил на один вопрос о закрытии здесь, в 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 вы ожидаете, что результатом будет экземпляр Constructor

. Обычно я создаю объекты, используя new . Но почему это не очень хорошая практика ? Похоже, что использование new и не использование new возвращает одно и то же. Каков правильный способ создания объектов из замыканий?

13
задан Joseph 16 February 2012 в 02:02
поделиться