Quick actions

cmd+k|ctrl+k

Navigation

Languages

Composition over Inheritance

Snippet info

Language

JavaScript

Visibility

public

Author

jsonkody

Created

2019-12-27T23:53:58Z

Updated

2019-12-27T23:53:58Z

const barker = (state) => ({
    bark: () => console.log(`Whoof, I am ${state.name}`)
})

const driver = (state) => ({
    drive: () => {
        state.position += state.speed
        console.log(`${state.name} drived from position ${state.position - state.speed} to position ${state.position}`)
    }
})

const killer = (state) => ({
    kill: () => console.log(`${state.name} goes killing!!!`)
})


const murderRobotDog = (name) => {
    
    let state = {
        name,
        speed: 100,
        position: 0
    } 
    
    return Object.assign(
        {
            getPosition() {
                console.log(`${state.name} is on position ${state.position}`)
            }
        },
        barker(state),
        driver(state),
        killer(state)
    )
}


const penny = murderRobotDog("Penny")
penny.bark()
penny.getPosition()
penny.drive()
penny.getPosition()
penny.kill()



INFO