Prototype

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.