Wie kann ich statische Variablen in Javascript erstellen?
Antworten
Zu viele Anzeigen?2021 UPDATE
Im Jahr 2021 können Sie einfach die static
Stichwort
TC39 hat die STATIC
Stichwort zu sein Stufe-4 Sprachmerkmal ab APRIL, 2021. Es hat lange gedauert, die static
JS verfügt über eine offizielle Reihe von JS-Sprachfunktionen, die Wartezeit war aufgrund mangelnder Browser-Unterstützung, jedoch; Major-Browser unterstützen nun die statische Schlüsselwort, und seine offene Saison für öffentliche statische Felder & private statische Felder.
Im Folgenden finden Sie ein allgemeines Beispiel dafür, wie die neue Methode zur Implementierung statischer JavaScript-Klassenmitglieder aussieht
class ColorFinder {
static #red = "#ff0000";
static #green = "#00ff00";
static #blue = "#0000ff";
static colorName(name) {
switch (name) {
case "red": return ColorFinder.#red;
case "blue": return ColorFinder.#blue;
case "green": return ColorFinder.#green;
default: throw new RangeError("unknown color");
}
}
// Somehow use colorName
}
Das obige Beispiel stammt aus dem TC39 Repository, Static-Fields
Um mehr über die Implementierung dieser neuen JS-Sprachfunktion zu erfahren (HIER KLICKEN).
Um mehr über die Funktion selbst zu erfahren und Beispiele zu sehen, die die Syntax für statische Felder veranschaulichen (HIER KLICKEN).
Über die class
die mit ECMAScript 2015 eingeführt wurde. Die anderen Antworten sind nicht ganz klar.
Das folgende Beispiel zeigt, wie man eine statische Variable erstellt staticVar
mit dem ClassName
. var
synthax:
class MyClass {
constructor(val) {
this.instanceVar = val;
MyClass.staticVar = 10;
}
}
var class1 = new MyClass(1);
console.log(class1.instanceVar); // 1
console.log(class1.constructor.staticVar); // 10
// New instance of MyClass with another value
var class2 = new MyClass(3);
console.log(class1.instanceVar); // 1
console.log(class2.instanceVar); // 3
Um auf die statische Variable zuzugreifen, verwenden wir die .constructor
Eigenschaft, die einen Verweis auf die Objektkonstruktorfunktion zurückgibt, mit der die Klasse erstellt wurde. Wir können sie für die beiden erstellten Instanzen aufrufen:
MyClass.staticVar = 11;
console.log(class1.constructor.staticVar); // 11
console.log(class2.constructor.staticVar); // 11 <-- yes it's static! :)
MyClass.staticVar = 12;
console.log(class1.constructor.staticVar); // 12
console.log(class2.constructor.staticVar); // 12
Wenn Sie statische Variablen für die Erstellung von Konstanten in Ihrer Anwendung deklarieren möchten, halte ich den folgenden Ansatz für den einfachsten
ColorConstants = (function()
{
var obj = {};
obj.RED = 'red';
obj.GREEN = 'green';
obj.BLUE = 'blue';
obj.ALL = [obj.RED, obj.GREEN, obj.BLUE];
return obj;
})();
//Example usage.
var redColor = ColorConstants.RED;
Das, was in JavaScript einer statischen Variable am nächsten kommt, ist eine globale Variable - das ist einfach eine Variable, die außerhalb des Bereichs einer Funktion oder eines Objektliterales deklariert wird:
var thisIsGlobal = 1;
function foo() {
var thisIsNot = 2;
}
Eine andere Möglichkeit wäre, globale Variablen in einem Objektliteral zu speichern, etwa so:
var foo = { bar : 1 }
Und dann greifen Sie auf die Variabeln wie folgt zu: foo.bar
.