Wie kann ich Klassen (und Namespaces) in JavaScript emulieren?Wie kann ich "Klassen" in JavaScript emulieren? (mit oder ohne Drittanbieterbibliothek)
Ich muss eine JavaScript-Bibliothek erstellen und habe begrenzte Erfahrung mit der Sprache. Ich dachte immer, dass es native Unterstützung für Klassen hat, aber es ist weniger mit Java verwandt als ich angenommen hatte. Es scheint, dass alles in JavaScript eine Funktion ist.
Was ich bis jetzt herausgefunden habe, macht sehr viel Sinn, da es eine dynamische, schwach typisierte Sprache ist, aber das macht es zu einer Abkehr für Leute, die es gewohnt sind eine stark typisierte Sprache zu haben und einen Compiler zu benutzen Finde unsere Fehler :)
Ich arbeite hauptsächlich in C# und Java und hoffte auf etwas syntaktisch ähnliches, so dass die Bibliothek für unsere anderen C# -Entwickler, die sie pflegen müssen, bekannt ist.
Ich habe die folgende Art von Code, der funktioniert, aber ich fragte mich, was andere Entwickler nehmen würde auf diesem sein. Was sind die Alternativen? Gibt es einen Weg, der besser ist? Gibt es einen Weg, der lesbarer ist?
Ich verstehe, dass das, was ich will, ist etwas Ähnliches wie C# oder Java, wenn ich soll nur die Tatsache akzeptieren, dass diese JavaScript ist, aber mein Ziel ist es, zu versuchen, die Lernkurve für andere Entwickler zu erleichtern, indem es besser vertraut und intuitiv für sie.
//Perform the namespace setup (this will actually be done with checking
//in real life so we don't overwrite definitions, but this is kept short
//for the code sample).
var DoctaJonez = new function();
DoctaJonez.Namespace1 = new function();
/**
* Class description.
*/
DoctaJonez.Namespace1.SomeClass = function()
{
/**
* Public functions listed at the top to act like a "header".
*/
this.publicFunction = privateFunction;
/**
* Private variables next.
*/
var privateVariable;
/**
* Finally private functions.
*/
function privateFunction()
{
}
}
//Create an instance of the class
var myClass = new DoctaJonez.SomeClass();
//Do some stuff with the instance
myClass.publicFunction();
Ich wusste nicht, dass Sie das tun könnten, das sieht viel eleganter aus. Danke für die Eingabe :) +1 –