composition

Credit: https://www.youtube.com/watch?v=wfMtDGfHWpA

by Artem

JavaScript

'use strict';

const barker = (state) => ({
  bark: () => console.log('Woff: ', state.name)
})

const driver = (state) => ({
  drive: () => state.position += state.speed
})

const murderRobotDog = (name) => {
  let state = {
    name,
    speed: 100,
    position: 0
  }
  return Object.assign({},
    barker(state),
    driver(state)
  )
}

murderRobotDog('sniffles').bark();