Erstellen einer einfachen JavaScript-Klasse mit jQuery

8

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)

    
samy 19.01.2013, 19:50
quelle

2 Antworten

19

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%

Geige

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:
Ссылка

    
Fabrício Matté 19.01.2013, 21:04
quelle
2

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%     
Frank van Puffelen 19.01.2013 20:27
quelle