ES6 Classes

Objektorienterad JavaScript

Allt kretsar kring

this

Experimentera med this och lär dig det så kommer mycket bli enklare

this syftar på context

Enklare sagt, vilket objekt funktionen kallas på eller tillhör

En funktion kan ha samma funktionalitet men bete sig olika beroende på hur du kallar på den och när du kallar på den: this ändras

Class keyword

//class keyword
class Person{
  //explicit constructor method
  constructor(name, age){
    this.name = name;
    this.age = age;
  }
}

function Person(name, age){
  this.name = name;
  this.age = age;
}

class

Gör samma sak som Constructor Call

Måste alltid skrivas med nyckelordet class

Måste alltid skapas med new

var newPerson = new Person("Ronny", 52);

class methods

class Person{
  constructor(name, age){
    this.name = name;
    this.age = age;
  }
  printName(){
    console.log(this.name);
  }
}

get & set

class Person{
  constructor(name, age){
    this.name = name;
    this.age = age;
  }
  get name(){
    return this.name;
  }
  set name(newName){
    this.name = newName;
  }
}
class Person{
  set name(newName){
    if(newName !== ''){
      this.name = newName;
    }
    return 'You must supply a name!';
  }
}

ES6 Classes

Tillför inget nytt egentligen

"Syntactical sugar"

Ärver med extends

Den klassen man ärver ifrån kan kallas på med super

Arv

class Person {
  constructor(name) {
    this.name = name;
  }
  toString() {
      return `${this.name}`;
  }
}

class Teacher extends Person {
    constructor(name, title) {
        super(name);
        this.title = "Teacher";
    }
}

Övningar finns på Zenit/GitHub

Eget arbete med gruppuppgiften