A menudo, cuando creo un objeto en Javascscript, hago algo como esto:
function getObj(property) { return { property, displayProp: function() { console.log(this.property); } } } let obj = getObj("Hello World!);Sé que la forma habitual de crear un constructor sería así:
function getObj(property) { this.property = property; this.displayProp = function() { console.log(this.property); } } let obj = new getObj("Hello World!);Ahora, mi pregunta es, ¿son estos dos métodos equivalentes? Por lo que puedo decir, son lo mismo, y también puede usar la palabra clave 'nuevo' al crear un objeto usando el primer caso. Para mí, el primer caso tiene más sentido, pero no me importa demasiado. Gracias.
El primer ejemplo es una función que devuelve un objeto literal (cuyo constructor seguirá siendo simplemente "Objeto").
El segundo crea un nuevo constructor.
function getObj(property) { return { property, displayProp: function() { console.log(this.property); } } } // this will be useless because the prototype of getObj is not related to the returned object getObj.prototype.test_prop = "Test prop"; let obj = getObj("Hello World!"); console.log(obj.constructor.name) // Object console.log(obj.test_prop) // undefined function Obj(property) { this.property = property; this.displayProp = function() { console.log(this.property); } } Obj.prototype.test_prop = "Test prop"; obj = new Obj("Hello World!"); console.log(obj.constructor.name) // Obj console.log(obj.test_prop) // Test prop