Object: create
Con object create(proto, proops) podemos crear un objeto a partir del prototype de otro objeto, incluso se le pueden añadir nuevas propiedades mediante un objeto property con el nombre y definición.
Su sintáxis es object.create( prototype, [propiedades nuevas])
El objeto de partida actúa como prototipo para la funcion creada, por lo que ésta hereda métodos y propiedades del objeto que se usa como modelo. .
var empleo = {
puesto: '',
horario: '',
disponible: true,
verDetalles() {
let estado = this.disponible? 'vacante' : 'ocupado';
console.log('El puesto de '+ this.puesto +' está ' + estado);
}
};
var oficina = Object.create(empleo);
oficina.puesto = "recepcion";
var almacen = Object.create(empleo);
almacen.puesto = 'cargador';
almacen.disponible = false;
oficina.verDetalles();
almacen.verDetalles();
console.log(empleo.isPrototypeOf(oficina)); //true
console.log(empleo.isPrototypeOf(almacen) ) //true
A partir del objeto empleo se instancia los objetos oficina y almacen. Ambas instancias están vacías, pero pueden leer las propiedades y métodos del objeto de partida, empleo, porque este es su prototype. Para los objetos instanciados habría que sobreescribir las propiedades con los valores que le corresponda a cada uno. .
Creando un nuevo elemento con propiedades:
var Personal = {empresa:"Acme"};
var jefe = Object.create(Personal, {depto:{value :"ventas"}});
var empleo = Object.create(Personal);
console.log(jefe.empresa, jefe.depto) ; // "acme", "ventas"
console.log(empleo.empresa);
En este ejemplo ahora el objeto jefe tiene una propiedad denominada depto. Por su parte empleo no tiene ninguna propiedad nueva, solo puede leer la propiedad empresa de Personal.