Ich versuche, jQuery-Klassen zu verstehen, aber es läuft nicht sehr gut.
Mein Ziel ist es, eine Klasse auf diese Weise zu verwenden (oder einen besseren Weg dafür zu finden):
%Vor%Ich habe es anhand von Beispielen anderer Leute versucht:
%Vor% Das Endziel ist, dass sich ein Charakter mit den Tastaturbuchstaben A
und D
links und rechts auf dem Bildschirm bewegt.
Ich habe das Gefühl, dass ich mit dieser "Klasse" etwas falsch mache aber ich bin mir nicht sicher warum.
(Entschuldigung für mein Englisch)
Ein wichtiges Problem ist, dass Sie das übergebene jQuery-Objekt / Element einem this.element
- oder einem anderen this.propertyName
- zuweisen müssen, damit Sie später darauf innerhalb der Methoden der Instanz zugreifen können.
Sie können auch MoveRight()
/ MoveLeft()
nicht direkt aufrufen, da diese Funktionen nicht in der Scope-Kette definiert sind, sondern im Prototyp des Konstruktors Ihrer Instanz. Daher benötigen Sie einen Verweis auf die Instanz selbst, die aufgerufen werden soll diese.
Aktualisierter und kommentierter Code unten:
%Vor% Beachten Sie auch, dass JavaScript keine tatsächlichen "Klassen" (zumindest nicht, bevor ES6 implementiert wird) oder Methoden (die definitionsgemäß ausschließlich Klassen zugeordnet sind), sondern Konstruktoren, die eine süße Syntax, die Klassen ähnelt, bietet. Hier ist ein großartiger Artikel, geschrieben von TJ Crowder bezüglich der "falschen" Methoden von JS, es ist ein wenig fortgeschritten, aber jeder sollte etwas neues daraus lernen können:
Ссылка
Wenn Sie this
in Ihren Player
-Prototypenfunktionen verwenden, zeigt this
auf das aktuelle Player-Objekt.
Wenn Sie $(this).keypress
verwenden, muss this
jedoch auf ein HTML-Element verweisen.
Die beiden sind einfach inkompatibel. Es gibt nur ein this
und es zeigt auf das aktuelle Player-Objekt, nicht auf ein HTML-Element.
Um Ihr Problem zu beheben, müssen Sie das HTML-Element beim Erstellen oder in den relevanten Funktionsaufrufen in das Player-Objekt einfügen.
Sie können das Element bei der Konstruktion wie folgt in das Player-Objekt einfügen:
%Vor%Tags und Links javascript class jquery keyboard-events