Ejemplo rápido de uso del patrón de diseño Prototype, que permite realizar una copia rápida de un objeto.
/**
* Prototype is a creational design pattern that lets you copy existing objects without making your code dependent on their classes.
*/
const vehiculoPrototype = {
init: function (marca, modelo) {
this.marca = marca
this.modelo = modelo
},
describir: function () {
return `Vehículo: ${this.marca} ${this.modelo}`
},
clone: function () {
return Object.create(this)
}
}
const moto = Object.create(vehiculoPrototype)
moto.init("Yamaha", "MT")
console.log(moto.describir())
let motoClonada = moto.clone();
console.log(motoClonada.describir())
// Se cumple que "No depende de la clase"
console.log("Prototipos diferentes: ", Object.getPrototypeOf(moto) !== Object.getPrototypeOf(motoClonada))
Ejecución con node.

Nota importante:
En lenguajes como java (no confundir con javascript), podemos realizar un casting. Javascript no cuenta con la opción de casting.