Composition over Inheritance in JS
// Prototypal OO with ES6 | |
// Eric Elliott's example | |
let animal = { | |
animalType: 'animal', | |
describe () { | |
return `An ${this.animalType}, with ${this.furColor} fur, | |
${this.legs} legs, and a ${this.tail} tail.`; | |
} | |
}; | |
let mouse = Object.assign(Object.create(animal), { | |
animalType: 'mouse', | |
furColor: 'brown', | |
legs: 4, | |
tail: 'long, skinny' | |
}); | |
console.log(mouse.describe()); | |
// better example with Factories | |
let animal = { | |
animalType: 'animal', | |
describe () { | |
return `An ${this.animalType} with ${this.furColor} fur, | |
${this.legs} legs, and a ${this.tail} tail.`; | |
} | |
}; | |
let mouseFactory = function mouseFactory () { | |
let secret = 'secret agent'; | |
return Object.assign(Object.create(animal), { | |
animalType: 'mouse', | |
furColor: 'brown', | |
legs: 4, | |
tail: 'long, skinny', | |
profession () { | |
return secret; | |
} | |
}); | |
}; | |
let james = mouseFactory(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment