stephledev
10/10/2017 - 8:43 AM

Factory function

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