Opdrachten Week 5 - marcoFijan/projectTech GitHub Wiki

Prototypes

Prototype is data die automatisch wordt meegegeven wanneer je een variable opslaat in een array. Daarnaast zitten in elke object variant wel een prototype. Die prototype zit in elke object variant en kan methods hebben.

Alles begint met een object, die hebben een constructor, en die hebben basisvariable / methods die we kunnen gebruiken. Daarom geld: Alles in Javascript is een object, behalve de premiere variablen.

Wij kunnen dus ook een Object maken. Dit kan door een function te maken met een hoofdletter:

//ES 6
function Animal (name, species, power){
  let animal = Object.create(Animal.prototype)
  animal.name = name
  return animal
}

Animal.prototpye.eat() = function(){
  console.log('the $(this.name) is eating')
}

var cat = Animal('cat')

//ES5
function Animal (name, species, power){
  this.name = name
  return animal
}

Animal.prototpye.eat() = function(){
  console.log('the $(this.name) is eating')
}

var cat = new Animal('cat')

Nu kun je als het ware methods toevoegen aan dit object.

In plaats van prototyping, kun je ook classes aanmaken (zoals in Java). Maar in feite is dit vrijwel hetzeflde als prototyping alleen in een nieuw jasje. Classes krijgen alleen wel steeds meer methods met zich mee dus is het misschien wel handig om hierop te focussen.

class Animal {
  constructor(name, species, power){
    this.name = name
    this.species = species
    this.power = power
  }
}

Repeat theory

Hoisting again

Het omhoog zetten van variable declarations (var a) Je hebt weer de creation fase (het decladeren en 'maken' van de variables) en de execution fase (het uitvoeren van en de waarde geven aan functions en variables)

Scope

Wanneer een functie in zijn aparte scope een variable haalt uit buiten zijn scope (global scope), dan noem je dat closure. Closure betekent simpelweg dat de inner function scope toegang heeft op de outer function scope buiten de function, mits die inner function in de outer function scope zit (is a child of). Scope werkt dus alleen naar buiten.