Welches Muster wird beim Erstellen der JavaScript-Klasse verwendet?

7

Was ist der beste Weg, um Klassen (wie in OOP) in Javascript zu erstellen? Im Moment benutze ich das folgende Muster. Ist es in Ordnung?

%Vor%     
user670800 22.03.2011, 08:22
quelle

4 Antworten

2

Es gibt keinen "besten" Weg. Es gibt ein paar OOP-Muster in JavaScript, und das von Ihnen erwähnte ist eines davon (und auch ein beliebtes). Es ist im Wesentlichen ein prototypisches (oder pseudoklassisches) Muster mit einer Schließung, um private klassenbasierte statische Variablen einzukapseln.

Es gibt andere Muster (z. B. das von Douglas Crockford empfohlene Funktionsmuster).

Ich persönlich empfehle das pseudoklassische Muster (obwohl das beste Muster ein heißes Thema ist).

Wenn Sie OOP mit JavaScript ausführen, empfehle ich stark , dass Sie eine JavaScript-Bibliothek mit eingebauter OOP in Betracht ziehen, beispielsweise Das Dojo-Toolkit oder die Closure-Bibliothek . Andere Bibliotheken (z. B. jQuery, MOOtools, Ext usw.) haben alle OOP-Module und / oder Plugins.

    
Stephen Chung 22.03.2011, 08:36
quelle
8

Meiner Meinung nach ist der beste Weg, um Klassen in JavaScript zu erstellen, "nicht". Verzeihen Sie, dass ich unverblümt bin, aber wenn Sie mit JavaScript arbeiten, versuchen Sie, Klassen zu vergessen - sie existieren hier nicht - und akzeptieren Sie, dass die Sprache nur Objekte betrifft.

Wenn Sie keine Klassen in der Sprache haben, bedeutet dies, dass weniger Code geschrieben werden muss. In typischen Anwendungen haben die meisten Objekte keine Geschwister. Sie haben immer nur eine document , eine window , eine userList usw. Erstellen Sie diese Objekte mit der Objektliteralnotation:

%Vor%

Obwohl es in JavaScript keine Klassen gibt, gibt es Konstruktoren und Prototypen . Diese Konzepte sind nützlich, wenn Sie mehrere ähnliche Objekte haben (z. B. Benutzer in userlist ). Ihr Codebeispiel verwendet beide Konzepte. Mit Namen wie myclass ist es schwer zu sagen, was Sie zu modellieren versuchen. Hier ist ein Beispiel für einen User -Konstruktor und eine Erweiterung seines Prototyps:

%Vor%     
Jørn Schou-Rode 22.03.2011 08:36
quelle
7

Das folgende Beispiel zeigt ein Muster, das ich im Laufe der Zeit entwickelt habe.

Es nutzt Scoping, um private Felder und Methoden zuzulassen.

Eine ausführliche Diskussion finden Sie in JavaScript-Klassenmustern

%Vor%     
Lucas 20.04.2013 09:40
quelle
2

Javascript verwendet eine prototypische Vererbung.

Wenn Sie benutzerdefinierte Klassen erstellen möchten, würde ich empfehlen, zu lesen, worum es bei der prototypischen Vererbung geht, anstatt zu versuchen, die c # -Methodik auf js zu erzwingen (indem klassenbasierte Vererbung über prototypisch implementiert wird)

Ссылка

    
Zebi 22.03.2011 08:36
quelle

Tags und Links