Zwei Möglichkeiten zum Deklarieren privater Variablen in JavaScript

Zwei Möglichkeiten zum Deklarieren privater Variablen in JavaScript

Vorwort

JavaScript unterscheidet sich von anderen Sprachen dadurch, dass es Schlüsselwörter zum Deklarieren privater Variablen verwenden kann.
Ich kenne zwei Möglichkeiten zum Deklarieren privater Variablen in JavaScript: Eine besteht in der Verwendung von Closures, die andere in der Verwendung von WeakMap.

Verschlüsse

Es gibt viele Möglichkeiten, Abschlüsse zu beschreiben, zum Beispiel:
Funktionen, die auf den Umfang anderer Funktionen zugreifen können;
Eine Brücke für innere Funktionen, um auf äußere Funktionsbereiche zuzugreifen;
......

Die Logik der Verwendung von Closures zum Erstellen privater Variablen lautet:
1. Deklarieren Sie Variablen und interne Funktionen in externen Funktionen;
2. Verwenden Sie interne Funktionen, um auf Variablenwerte zuzugreifen oder diese zu ändern.
3. Geben Sie die innere Funktion in der äußeren Funktion zurück.

Funktion außerhalb(){
	sei val = 123;
	Funktion innerhalb(){
		Rückgabewert;
	}
	zurück nach drinnen;
}
console.log(draußen()());//123

Das obige Beispiel gibt uns eine allgemeine Vorstellung von der Logik der Verwendung von Closures zum Erstellen privater Variablen, reicht jedoch nicht aus, um die Bedeutung privater Variablen widerzuspiegeln. Eine const-Variable kann auch den Effekt des obigen Codes erzielen:

//Darauf kann zugegriffen, aber es kann nicht geändert werden, wodurch der Effekt des obigen Codes erzielt wird const val = 123;
console.log(Wert);//123

Der folgende Code verdeutlicht insbesondere die Bedeutung privater Variablen:

Funktion Person () { 
 let _name = "unbekannt";
 sei _Alter = 18;
 let _sex = 'Mann';

 Funktion setzeName(Name){
  _name = Name || 'unbekannt';
 }

 Funktion getName(){
  gibt _name zurück;
 }

 Funktion setAge(Alter){
  wenn(Typ des Alters === 'Zahl'){
   _Alter = Math.floor(Alter);
  }anders{
   Fehler auslösen("Typ des Alters !== 'Zahl'");
  }
 }

 Funktion getAge(){
  gib _age zurück;
 }

 Funktion setzeGeschlecht(Geschlecht){
  wenn(Geschlecht === 'Mann' || Geschlecht === 1){
   _sex = 'Mann';
  }sonst wenn(Geschlecht === 'Frau' || Geschlecht === 0){
   _sex = 'Frau';
  }anders{
   throw Error('Eingabefehler');
  }
 }

 Funktion getSex(){
  gib _sex zurück;
 }

 zurückkehren {
  setName : setName,
  getName : getName,
  Alter festlegen: Alter festlegen,
  getAge : getAge,
  Geschlecht festlegen: Geschlecht festlegen,
  Sex bekommen: Sex bekommen
 }
}

sei xiaoming = person();
lass xiaohong = person();
xiaoming.setName('xiaoming');
xiaohong.setName('xiaohong');
console.log('xiaoming-Name: ' + xiaoming.getName());//xiaoming-Name: xiaoming
console.log('xiaohong-Name: ' + xiaohong.getName());//xiaohong-Name: xiaohong

xiaoming.setAge(19.3333);
xiaohong.setAge('16');//Nicht abgefangener Fehler: typeof age !== 'number'
console.log('xiaoming Alter: ' + xiaoming.getAge());//xiaoming Alter: 19
console.log('xiaohong Alter: ' + xiaohong.getAge());//xiaohong Alter: 18


xiaoming.setSex(1);
xiaohong.setSex('Frau');
console.log('Xiaoming Geschlecht:' + xiaoming.getSex());//Xiaoming Geschlecht: Mann
console.log('xiaohong Geschlecht: ' + xiaohong.getSex());//xiaohong Geschlecht: Frau

Aus dem obigen Code können wir ersehen, dass wir, wenn wir die Werte der drei Variablen _name, _age und _sex festlegen oder abrufen möchten, nur die festen Methoden wie setName, getName, setAge, getAge, setSex, getSex usw. verwenden können und dass in allen Setter-Methoden die formalen Parameter beurteilt werden. Dies bedeutet, dass alle Vorgänge am Objekt unter Kontrolle sind, was einige der negativen Auswirkungen von JavaScript als schwach typisierte Sprache bis zu einem gewissen Grad abschwächt.

Schwache Karte

Wenn Sie nicht viel über WeakMap wissen, können Sie zunächst die ausführliche Einführung zu WeakMap lesen.
Der Hauptpunkt hierbei ist, dass der Schlüssel von WeakMap nicht aufzählbar ist.

let nameWeakMap = neue WeakMap();
let ageWeakMap = neue WeakMap();
lass sexWeakMap = neue WeakMap();

Funktion Person () {
 let _hash = Objekt.create(null);
 nameWeakMap.set(_hash,'unbekannt');
 AlterWeakMap.set(_hash,18);
 sexWeakMap.set(_hash,'Mann');
 Funktion setzeName(Name){
  nameWeakMap.set(_hash,name || 'unbekannt');
 }

 Funktion getName(){
  gibt den NamenWeakMap zurück.get(_hash);
 }

 Funktion setAge(Alter){
  wenn(Typ des Alters === 'Zahl'){
   AlterWeakMap.set(_hash,Math.floor(Alter));
  }anders{
   Fehler auslösen("Typ des Alters !== 'Zahl'");
  }
 }

 Funktion getAge(){
  gibt ageWeakMap.get(_hash) zurück;
 }

 Funktion setzeGeschlecht(Geschlecht){
  wenn(Geschlecht === 'Mann' || Geschlecht === 1){
   sexWeakMap.set(_hash,'Mann');
  }sonst wenn(Geschlecht === 'Frau' || Geschlecht === 0){
   sexWeakMap.set(_hash,'Frau');
  }anders{
   throw Error('Eingabefehler');
  }
 }

 Funktion getSex(){
  gibt sexWeakMap.get(_hash) zurück;
 }

 zurückkehren {
  setName : setName,
  getName : getName,
  Alter festlegen: Alter festlegen,
  getAge : getAge,
  Geschlecht festlegen: Geschlecht festlegen,
  Sex bekommen: Sex bekommen
 }
}

sei xiaoming = person();
lass xiaohong = person();
xiaoming.setName('xiaoming');
xiaohong.setName('xiaohong');
console.log('xiaoming-Name: ' + xiaoming.getName());//xiaoming-Name: xiaoming
console.log('xiaohong-Name: ' + xiaohong.getName());//xiaohong-Name: xiaohong

xiaoming.setAge(19.3333);
xiaohong.setAge('16');//Nicht abgefangener Fehler: typeof age !== 'number'
console.log('xiaoming Alter: ' + xiaoming.getAge());//xiaoming Alter: 19
console.log('xiaohong Alter: ' + xiaohong.getAge());//xiaohong Alter: 18


xiaoming.setSex(1);
xiaohong.setSex('Frau');
console.log('Xiaoming Geschlecht:' + xiaoming.getSex());//Xiaoming Geschlecht: Mann
console.log('xiaohong Geschlecht: ' + xiaohong.getSex());//xiaohong Geschlecht: Frau

Der gleiche Effekt wird durch die Erstellung privater Variablen erzielt. WeakMap wird übrigens zum Erstellen privater Variablen in der Klasse verwendet.

Abschluss

Dieser Artikel dokumentiert lediglich, was ich über die Methoden und Funktionen zum Erstellen privater Variablen in JavaScript weiß. Wenn Fehler oder Auslassungen vorliegen, weisen Sie mich bitte darauf hin. Vielen Dank.

Oben sind die Details der beiden Möglichkeiten zum Deklarieren privater Variablen in JavaScript aufgeführt. Weitere Informationen zum Deklarieren privater Variablen in JavaScript finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • JavaScript Advanced (I) Verbesserung der Variablendeklaration Beispielanalyse
  • Detaillierte Erklärung des Unterschieds zwischen let- und var-Deklarationsvariablen in js
  • Detaillierte Erklärung des Unterschieds zwischen der Verwendung und Nichtverwendung von var in der js-Variablendeklaration
  • Unterschied zwischen JavaScript-Funktionsdeklaration und Variablendeklaration
  • Eine kurze Analyse der JavaScript-Variablendeklaration
  • Kennen Sie die Variablendeklaration in JavaScript?

<<:  Linux löscht automatisch Protokolle und Beispielbefehle von vor n Tagen

>>:  Flussdiagramm für den Webserverzugriff auf HTTP und HTTP-Zusammenarbeit

Artikel empfehlen

Analyse des Prinzips des Rabbitmq Heartbea-Herzschlagerkennungsmechanismus

Vorwort Wenn Sie RabbitMQ verwenden und für einen...

Zusammenfassung der MySQL InnoDB-Sperren

Inhaltsverzeichnis 1. Gemeinsam genutzte und exkl...

Fehlerbehebung bei der Ursache des 502 Bad Gateway-Fehlers auf dem Nginx-Server

Der Server meldet einen Fehler 502 beim Synchroni...

So finden und löschen Sie doppelte Datensätze in MySQL

Hallo zusammen, ich bin Tony, ein Lehrer, der nur...

Mehrere Möglichkeiten zum Herunterfahren des Hyper-V-Dienstes unter Windows 10

Wenn Sie VMware Workstation zum Öffnen einer virt...

JavaScript implementiert einfache Rechnerfunktion

In diesem Artikelbeispiel wird der spezifische Ja...

Super detaillierte grundlegende JavaScript-Syntaxregeln

Inhaltsverzeichnis 01 JavaScript (abgekürzt: js) ...

Detaillierte Erläuterung der CSS-Bildspleißtechnologie (Sprite-Bild)

CSS-Bildspleißtechnologie 1. Bildzusammenfügung B...

Zusammenfassung zur Positionierung in CSS

Es gibt vier Arten der Positionierung in CSS, die...

Zusammenfassung häufig verwendeter Escape-Zeichen in HTML

Die in HTML häufig verwendeten Escape-Zeichen wer...