i respondió a una pregunta sobre el cierre aquí en lo que con esta muestra:creando objetos a partir del cierre de JS: ¿debería usar la palabra clave "nueva"?
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
un usuario ha comentado mi respuesta diciendo:
Además, si su función devuelve de forma explícita un objeto que no es un buen practicar llamarlo con nueva porque eso es engañosa - si se utiliza la nueva era de esperar que el resultado sea una instancia de Constructor
generalmente creo objetos usando nuevo. pero ¿por qué es una mala práctica? parece que usar nuevas y no usar nuevas devuelve lo mismo. ¿Cuál es la forma correcta de crear objetos a partir de cierres?
me gusta esto: http://jsfiddle.net/DZTC8/1/ ambos devuelven lo mismo, con o sin el 'nuevo' – Joseph
@Joseph: mi punto es que hace que' instanceof' actúe raro. El objeto devuelto es * no una instancia del constructor *, como esperaría un usuario, sino simplemente un Objeto. – Ryan
+1 por "extraño". ¡Gracias! ahora entiendo la idea – Joseph