const Belt = (color, speed) => {
const proto = {
type: 'belt',
move() {
console.log(`${this.color} ${this.type} moved ${this.speed}`)
}
}
return Object.assign(Object.create(proto), {color, speed})
}
const Inserter = (color, stackSize) => {
const proto = {
type: 'inserter',
grab() {
console.log(`${this.color} ${this.type} grabbed ${this.stackSize}`)
}
}
return Object.assign(Object.create(proto), {color, stackSize})
}
let blueBelt = Belt('blue', 3)
blueBelt.move() // blue belt moved 3
let redInserter = Inserter('red', 1)
redInserter.grab() // red inserter grabbed 1