Descubre cómo usar Object.create() en JavaScript
Aprende a crear objetos basados en prototipos con esta función útil
Object.create() es una función en JavaScript que permite crear un nuevo objeto basado en un prototipo existente. Esta función puede ser muy útil cuando necesitas crear objetos con propiedades y métodos similares a otros objetos existentes en tu código.
La sintaxis básica de Object.create() es la siguiente:let nuevoObjeto = Object.create(prototipo);
Donde ‘nuevoObjeto’ es el objeto que estamos creando y ‘prototipo’ es el objeto al que se basará nuestro nuevo objeto.
Una vez creado el objeto, puedes agregar propiedades y métodos a él de la misma manera en que lo harías con cualquier otro objeto en JavaScript.
Ejemplo 1: Creamos una clase Persona y utilizamos Object.create() para crear instancias
function Persona(nombre, edad) {
this.nombre = nombre;
this.edad = edad;
}
var persona1 = Object.create(Persona.prototype);
persona1.nombre = "Juan";
persona1.edad = 25;
Object.create() se utiliza para crear un objeto que hereda de Persona.prototype, lo que nos permite ahorrar código al no tener que volver a escribir las propiedades y métodos comunes a todas las instancias de la clase Persona.
Ejemplo 2: Creamos un objeto con propiedades inmutables
const datosUsuario = Object.create({
nombre: 'Juan',
edad: 25,
correo: 'juan@example.com'
});
datosUsuario.nombre = 'Pedro'; // No se puede modificar la propiedad "nombre"
En este ejemplo, usamos Object.create() para crear un objeto con propiedades inmutables. La propiedad correo no se puede modificar ya que es parte de la propiedad inicial del objeto creado por Object.create().
Ejemplo 3: Creamos un objeto con métodos heredados
function Animal(nombre) {
this.nombre = nombre;
}
Animal.prototype.hablar = function() {
console.log(`${this.nombre} está hablando`);
};
var perro = Object.create(Animal.prototype);
perro.nombre = 'Firulais';
perro.hablar(); // "Firulais está hablando"
En este ejemplo, usamos Object.create() para crear un objeto perro que hereda el método hablar de la función Animal. Al llamar a perro.hablar(), se ejecuta el método heredado y se imprime en la consola «Firulais está hablando».
Ejemplo 4: Creamos un objeto con una copia de las propiedades de otro objeto
const obj1 = {a: 1, b: 2};
const obj2 = Object.create(obj1);
console.log(obj2.a); // 1
console.log(obj2.b); // 2
En este ejemplo, usamos Object.create() para crear un objeto obj2 que es una copia de las propiedades del objeto obj1. Al acceder a las propiedades de obj2, se devuelven los valores correspondientes de obj1.
Ejemplo 5: Creamos un objeto con una función personalizada de construcción
const Persona = {
create: function(nombre, edad) {
return {
nombre: nombre,
edad: edad,
saludar: function() {
console.log(`Hola, soy ${this.nombre}`);
}
};
}
};
const persona1 = Persona.create('Juan', 25);
persona1.saludar(); // "Hola, soy Juan"
En este ejemplo, usamos Object.create() para crear un objeto Persona con una función personalizada de construcción llamada create. La función create recibe los parámetros nombre y edad, y devuelve un objeto con esas propiedades además de una propiedad saludar que es una función anónima. Al llamar a persona1.saludar(), se ejecuta la función heredada y se imprime en la consola «Hola, soy Juan».
Conclusión
Object.create() es una función muy útil para crear objetos basados en prototipos existentes en JavaScript. Al utilizar esta función, puedes ahorrar tiempo y evitar errores al copiar y pegar propiedades y métodos entre objetos.
La próxima vez que necesites crear un objeto similar a uno existente, considera usar Object.create() en lugar de copiar y pegar manualmente las propiedades y métodos. También puedes explorar la función Object.setPrototypeOf() para asignar prototipos a objetos existentes.

