JavaScript — Introduktion genom exempel

11.2 Användning av this

I metoderna i objekten använder man this för att referera till egenskaper och metoder. Men vi har ju tidigare sett en annan användning av this. I en funktion som kopplas till ett HTML-element genom en händelselyssnare, är this en referens till HTML-elementet. Om det då är en metod i ett objekt som kopplas till elementet genom händelselyssnaren, får vi en konflikt i betydelsen av this. I detta exempel ska vi se hur denna konflikt kan hanteras.

11 min.

Sammanfattning

Ska en metod i ett objekt användas i en händelselyssnare, lägger man in anrop av den i en anonym funktion. Då kan this i metoden användas för att referera till objektets egenskaper och metoder.
elem.addEventListener("händelse", () => myObject.myMethod() );

Om man i metoden också behöver en referens till elementet, skickar man med event-objektet. Då kan man i metoden använda currentTarget som referens till elementet
elem.addEventListener("händelse", (e) => myObject.myMethod(e) );

myMethod(e) {
    this är referens till objektet
    e.currentTarget är referens till elementet
}

Om man ska använda en metod som en parameter, där man anger en funktion som ska aktiveras senare, t.ex. i en händelselyssnare eller en timer, kan man inte endast skriva this.myMethod, eftersom this då kommer referera till fel objekt. Istället får man ange metoden i en anonym arrow function
setTimer( () => this.myMethod(), time);

Egna övningar

I denna övning ska du göra några tillägg i koden som du skapade i övningen i föregående exempel. Så börja med att kopiera din JavaScript-kod från föregående övning och lägg in den i test.js i denna övning. Gör sedan följande tillägg:

Då man pekar på en ruta med en prognos för en dag, kan det se ut på följande sätt.

Exempel på en väderprognos