Felix Riesterer: Manöverkritik: OOP in JS

Beitrag lesen

Lieber Matthias,

Ich habe jetzt einmal eine überarbeitete Version veröffentlicht: JavaScript/Tutorials/OOP

mir gefällt die Ausführlichkeit. Da ich mit keinem echten Anfänger beide Vorlagen anschauen und ausprobieren konnte, kann ich nicht sicher beurteilen, welche Ausführlichkeit an welcher Stelle welches Verständnis erleichtert. Mir fehlt es zur Zeit schlicht an geeigneten Lerngruppen, um das zu evaluieren.

  1. JavaScript/Tutorials/OOP/Klassen und Vererbung
    • integriert Felix Kapitel mit @Wiko s Änderungen und der prototypischen Vererbung
    • zuerst ES6, dann die prototypische V. aus ES3

Mir fällt da etwas im Kapitel 1.2.2 Methoden für Events auf, das ich hier zur Diskussion stellen möchte.

hit (event) {
    var classThis = this.self;
    return "Ich bin " + classThis._alter + " Jahre alt."
}

Hier soll offensichtlich ein Event verarbeitet werden. Soweit klar. Was mich stört, ist die Annahme, dass man diese Objektmethode zwingend so verwendet:

object.addEventListener("click",p.click);

Diese Einbindung hat tatsächlich das Problem, dass ich innerhalb der Objektmethode hit(event) ein Problem mit dem Schlüsselwort this habe. Meiner Meinung nach ist aber die beste Lösung eben nicht, in hit(event) mit this.self zu hantieren, sondern die Einbindung so vorzunehmen, dass es das überhaupt nicht erst braucht:

class Person {
  constructor (name, alter) {...}
  hit (event) { return "Ich bin " + this._alter + " Jahre alt."; }
}

var p = new Person("Frizzy", 15);
var object = document.getElementById("alter");
object.addEventListener("click", event => p.hit(event));

In altmodischerer Schreibweise wäre die letzte Zeile eher so:

object.addEventListener("click", function (event) { p.hit(event); });

Damit ist der this-Kontext in der Objektmethode von Person genau der, den man dort gerne haben möchte. Und das Kapitel "Methoden für Events" sollte eher "Umgang mit dem this-Kontext bei Verwendung von Events" lauten.

Inwiefern man in einer Objektmethode this.self verwenden kann und wann man so etwas wirklich benötigt, ist eine andere Frage, die meiner Meinung nach an dieser Stelle das Anfängertutorial eher überfrachtet, als das Verständnis (wir sind inhaltlich noch immer ziemlich am Anfang!) zu stärken.

Was meint ihr dazu?

Liebe Grüße

Felix Riesterer