Wieczos Blog

Ich laufe auf Sonnenschein!

JavaScript: Problem mit this

by Thomas Wieczorek - Dezember 20th, 2011.
Filed under: JavaScript.

tl;dr http://howtonode.org/what-is-this hat mir this in JavaScript klar gemacht.

Vor kurzem habe ich angefangen, einen Memory-Klon in JavaScript zu entwickeln.

Zuerst verwendete ich nur prozedurales JS mit Underscore und jQuery. Nach über 500 Zeilen Spagetti-Code, habe ich nach Frameworks gesucht, um den Code zu organisieren und bin bei Backbone.js auf was Einfaches und Solides gestoßen.

Doch Code wie

_.delay(game.nextLevel, 500)

funktionierte nicht mehr. Das Problem ist JavaScripts this, das in verschiedenen Kontexten verschiedene Objekte referenziert. Das this in game.nextLevel referenziert nicht mehr game, sondern window.

Die Lösung zum Problem ist:

_.delay(_.bind(game.nextLevel, game), 500)

Somit wird game als Kontext der Funktion game.nextLevel gesetzt. Somit referenziert das this in der Funktion wieder das game Objekt.

Tim Caswells Artikel auf howtonode.org hat mir geholfen das Ganze besser zu verstehen.

Leave a Reply