Skip to content

Instantly share code, notes, and snippets.

@mattlockyer
Created June 11, 2019 13:38
Show Gist options
  • Save mattlockyer/87ac3a1bef09ca455e71c8a896e1e455 to your computer and use it in GitHub Desktop.
Save mattlockyer/87ac3a1bef09ca455e71c8a896e1e455 to your computer and use it in GitHub Desktop.
Object Composition Example
const canBark = (state) => ({
bark:(howManyTimes) => {
state.barks += howManyTimes
}
})
const canEat = (state) => ({
eat:(howMuch) => {
state.food -= howMuch
}
})
const dog = (name) => {
let state = {
name,
barks: 0,
food: 100,
}
return Object.assign(state, canBark(state), canEat(state));
}
const alfie = dog('Alfie')
alfie.bark(3)
alfie.eat(6)
console.log(alfie.barks) //3
console.log(alfie.food) //94
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment