El constructor se comporta de manera diferente utilizando la notación abreviada de ES6
ES6 introdujo unnotación abreviada para inicializar objetos con funciones y propiedades.
// ES6 shorthand notation
const obj1 = {
a(b) {
console.log("ES6: obj1");
}
};
// ES5
var obj2 = {
a: function a(b) {
console.log("ES5: obj2");
}
};
obj2.a();
obj1.a();
new obj2.a();
new obj1.a();
Sin embargo, estas notaciones diferentes se comportan de manera diferente, como puede ver. Si lo hagonew obj1.a()
en el navegador (probado Chrome y Firefox), obtengo unTypeError: obj1.a is not a constructor
. new obj2.a()
se comporta completamente normal.
¿Qué pasa aquí? ¿Alguien tiene una explicación y / o enlaces a la documentación / especificación?