Skip to content

Instantly share code, notes, and snippets.

@tk-o
Last active January 6, 2017 15:26
Show Gist options
  • Save tk-o/8147adb2cd3d60853237c892e348eec0 to your computer and use it in GitHub Desktop.
Save tk-o/8147adb2cd3d60853237c892e348eec0 to your computer and use it in GitHub Desktop.
Javascript composition example
const Airplane = {
getName() {
return `${this.name}`
}
}
const AirbusA380 = {
name: 'Airbus A380',
getName() {
return `${Airplane.getName.call(this)} of ${this.airline}`
}
}
const Cessna = {
name: 'Cessna'
}
// define factory functions (airbusA380, cessna)
const airbusA380 = (state) => Object.assign(
{},
Airplane,
AirbusA380,
state
)
const cessna = (state) => Object.assign(
{},
Airplane,
Cessna,
state
)
// create instances of airplanes
const emiratesAirbus = airbusA380({
airline: 'Emirates'
})
const privateCessnaJet = cessna()
console.log(emiratesAirbus.getName()) // prints "Airbus A380 of Emirates"
console.log(privateCessnaJet.getName()) // prints "Cessna"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment