Ich schreibe ein kleines Beispiel, um die Funktion getAge()
aufzurufen, um das Alter über ein Objekt anzuzeigen.
Ich habe 3 Möglichkeiten, das zu tun:
Meine Frage: Was ist der beste Weg? Und warum?
Ich würde das einfachste Formular empfehlen:
%Vor%Es erzeugt bereits ein gut definiertes Objekt mit den gewünschten Eigenschaften, es skaliert gut und es wird nicht durch den Code des Verwaltungsstandards für die roten Bänder belastet.
Guter Code hat das schon seit Jahren getan und es ist ein sehr bewährter Stil. Es ist lesbar und kompakt.
Was Sie daraus NICHT erhalten werden, sind die neuen erweiterten Funktionen der ES6-Klassendefinitionen, die in fortgeschritteneren Fällen erforderlich sein könnten.
Warnung! Dies ist nur meine persönliche, voreingenommene Meinung:
Ich werde zum einen keine Klassendefinitionen verwenden, stattdessen werde ich diesen Stil und Lambdas nutzen, wie ich es immer in mehr als 10 Jahren getan habe. Ich bin auch gegen die Einführung von syntaktischem Zucker in Javascript, nur um es wie andere Sprachen aussehen zu lassen. Ich bevorzuge das prototypische Paradigma.
Es hängt von dem tatsächlichen Problem ab, das Sie lösen müssen und von der Art der Programmierung, die Sie verwenden. Wenn Sie dazu neigen, einen objektorientierten Ansatz zu verwenden und von seinen Funktionen wie der Vererbung profitieren möchten, können Sie eine Person als
modellieren %Vor%Oder als eine Klasse
%Vor%Wenn Sie einen funktionaleren Stil bevorzugen, schreiben Sie reine und unabhängige Funktionen, die einige Aktionen für einige Daten ausführen:
%Vor% Für das Beispiel getAge
macht jede Art von statischer Funktion keinen Sinn (Ihr erstes Beispiel), da age
die Eigenschaft eines Objekts ist. Sie benötigen also eine Instanz eines Objekts, mit der Sie eine Methode aufrufen oder an eine Funktion übergeben können.
Ich sage nur, wie ich die drei benutzen würde. Das soll keine absolute Antwort sein, so sehe ich die Dinge. Und ich bin daran interessiert andere Sichtweisen zu sehen.
class
Ich würde dieses Schlüsselwort nur verwenden, wenn ich dieses Objekt mehrfach instanziieren möchte. (Nur verfügbar in ECMAScript 6)
%Vor%JSON
Ich würde nur einen JSON deklarieren, wenn ich ihn nur einmal instanziieren würde.
%Vor%function
Sie verwenden es mehr wie ein class
Ersatz hier. Mit dem Schlüsselwort new
können Sie diese Funktion beliebig oft als Klasse instanziieren. (Was eine Menge Leute tun und das ist ok! Meistens weil das Schlüsselwort class
nur in ECMAScript 6 verfügbar ist)
Ich würde so etwas vorschlagen. Ich wäre neugierig, das Feedback anderer zu hören.
%Vor%Meine Argumentation dafür ist, dass dies ein objektiver Ansatz ist.
Der Großbuchstabe lässt Sie wissen, dass diese Funktion mit einem mit dem Schlüsselwort new
verwendet werden soll.
Ist wiederverwendbar - Sie können mehrere verschiedene Person
-Objekte mit unterschiedlichen Altersgruppen haben, ohne die Methoden jedes Mal für jedes einzelne deklarieren zu müssen.
Syntax und Verwendung ähnelt objektorientierten Sprachen wie Java, mit denen man vielleicht bereits vertraut ist.
Der letzte Weg, den du geschrieben hast, ist der beste
%Vor%Aber es gibt eine bessere Leistung, aber wenig komplex beim Schreiben. Es ist wie TypeScript oder Babel kompiliert seine Klassen zu JavaScript.
%Vor%Verwendung ist die gleiche:
%Vor%Aber so zu schreiben, ist wenig zeitaufwendig. Daher denke ich, dass es das Beste ist, ES6-Klassen zu verwenden und sie mit TypeScript oder Babel zu kompilieren.
Also, meine Meinung ist der beste Weg, so zu schreiben:
%Vor%Tags und Links javascript ecmascript-6