How do I even

JavaScript

Applaud for

WebHenrik

WebTryggvi

var that = this;

WAT

function Klass (name) {
  this.name = name
}

Klass.prototype.printName = function () {
  console.log(this.name)
}

var a = new Klass("Tom")
a.printName(); // Tom

WAT

Classes

Template string

Arrow functions

Object.assign

But how do I write even JS?

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()
}

Class inheritance

Our customers demand a robot dog.

Class inheritance

Animal {
  poop()

  Dog {
    bark()  
  }

  Cat {
    snuggle()
  }
}

Robot {
  shootLazers()
}

Class inheritance

Our customers demand a robot dog.

GameObj {
    bark()

    Animal {
      poop()
    
      Dog {}
    
      Cat {
        snuggle()
      }
    }
    
    Robot {
      shootLazers()
      
      RobotDog {}
    }
}

Add parent class?

Class inheritance

Animal {
  poop()

  Dog {
    bark()
  }

  Cat {
    snuggle()
  }
}

Robot {
  shootLazers()
  
  RobotDog {
    bark()
  }
}

Duplicate code?

Class inheritance

No good option

Object composition

Object composition

Dog {
  poopBehaviour()
  barkBehaviour()
}

Cat {
  poopBehaviour()
  snuggleBehaviour()
}

Robot {
  shootLazersBehaviour()
}

Object composition

Our customers demand a robot dog.

Object composition

Dog {
  poopBehaviour()
  barkBehaviour()
}

Cat {
  poopBehaviour()
  snuggleBehaviour()
}

Robot {
  shootLazersBehaviour()
}

Object composition

Dog {
  poopBehaviour()
  barkBehaviour()
}

Cat {
  poopBehaviour()
  snuggleBehaviour()
}

Robot {
  shootLazersBehaviour()
}

RobotDog {
  barkBehaviour()
  shootLazersBehaviour()
}

Just bark and shoot lazers.

Testing

QUESTIONS?

ES6 L&L

By Tryggvi Gylfason

ES6 L&L

  • 452