WebHenrik
WebTryggvi
var that = this;function Klass (name) {
this.name = name
}
Klass.prototype.printName = function () {
console.log(this.name)
}
var a = new Klass("Tom")
a.printName(); // TomClasses
Template string
Arrow functions
Object.assign
ClassesÂ
Object composition
Singletons
adapt to new requirements
Familiar syntax
hard to adapt to new requirements
Easy to test
Class inheritance
Animal {
poop()
Dog {
bark()
}
Cat {
snuggle()
}
}
Robot {
shootLazers()
}
Our customers demand a robot dog.
Animal {
poop()
Dog {
bark()
}
Cat {
snuggle()
}
}
Robot {
shootLazers()
}
Our customers demand a robot dog.
GameObj {
bark()
Animal {
poop()
Dog {}
Cat {
snuggle()
}
}
Robot {
shootLazers()
RobotDog {}
}
}
Add parent class?
Animal {
poop()
Dog {
bark()
}
Cat {
snuggle()
}
}
Robot {
shootLazers()
RobotDog {
bark()
}
}
Duplicate code?
No good option
Object composition
Dog {
poopBehaviour()
barkBehaviour()
}
Cat {
poopBehaviour()
snuggleBehaviour()
}
Robot {
shootLazersBehaviour()
}Our customers demand a robot dog.
Dog {
poopBehaviour()
barkBehaviour()
}
Cat {
poopBehaviour()
snuggleBehaviour()
}
Robot {
shootLazersBehaviour()
}Dog {
poopBehaviour()
barkBehaviour()
}
Cat {
poopBehaviour()
snuggleBehaviour()
}
Robot {
shootLazersBehaviour()
}
RobotDog {
barkBehaviour()
shootLazersBehaviour()
}Just bark and shoot lazers.
Testing