JavaScript -Schließungen sind eine sehr interessante Sache. Nach dem Lesen einiger verwandter Informationen //www.vevb.com/article/29472.htm ist das Beeindruckendste daran: Es realisiert öffentlich und privat.
Die einfachste Syntax, um eine nicht anonyme Schließung zu schaffen, ist:
Die Codekopie lautet wie folgt:
var obj = (function () {// verschiedene Codes});
Das klassischste Beispiel für Schließungen:
Die Codekopie lautet wie folgt:
var makecounter = (function () {
var i = 1;
this.test = function () {
console.log (i);
i ++;
}
gib dies zurück;
});
var obj = makeCounter ();
obj.test (); // 1
obj.test (); // 2
var obj1 = makeCounter ();
obj1.test (); // 1
obj1.test (); // 2
privat und öffentlich:
Die Codekopie lautet wie folgt:
var makecounter = (function () {
var i = 1;
// das ist privat
Funktion log () {
console.log (i);
i ++;
}
// Dieser Typ ist öffentlich
this.test () {
Protokoll();
}
gib dies zurück;
});
var obj = makeCounter ();
obj.test (); // 1
obj.test (); // 2
obj.log (); //undefiniert
Selbstversorgungsfunktion:
Als ich das erste Mal einen solchen Code sah, fühlte ich mich: so fortgeschritten;
Die Codekopie lautet wie folgt:
var obj = (Funktion (Fenster) {
// eine Vielzahl von Codes
}(Fenster));
Dann ging ich zu Google und stellte fest, dass sie oft so schreiben:
Die Codekopie lautet wie folgt:
var obj = (function () {
var i = 1;
this.test = function () {
console.log (i);
i ++;
}
gib dies zurück;
} ());
obj.test (); // 1
obj.test (); // 2
Das einfachste Verständnis ist, dass Programmierer faul sind und zwei Schritte in einen Schritt schreiben.
Die Codekopie lautet wie folgt:
// Dies ist eine Funktion. Es sollte obj () so verwenden
var makecounter = function () {
// eine Vielzahl von Codes
}
// Dies ist ein Objekt. Es ist ähnlich wie var obj = makeCounter ();
var obj = (function () {
// eine Vielzahl von Codes
} ());
Es kann auch Parameter haben:
Die Codekopie lautet wie folgt:
var output = "neuer Test";
var obj = (Funktion (msg) {
this.test = function () {
console.log (msg);
}
gib dies zurück;
}(Ausgabe));
obj.test ();
Es kann auch komplexer und fortgeschrittener sein:
Die Codekopie lautet wie folgt:
var output = "neuer Test";
var obj = (function (obj, msg) {
// Dieser Typ ist auch privat. Ähnlich wie obj.i (! = Obj.i), aber nicht obj.i (weil es äußere unzugänglich ist).
var i = 1;
//Privat
Funktion log () {
console.log (i + ":" + msg);
i ++;
}
//öffentlich
obj.test = function () {
Protokoll();
}
Rückkehr obj;
} (obj, output));
obj.test (); // 1: neuer Test
obj.i = 100;
// Ich wurde nicht verändert worden
obj.test (); // 2: neuer Test
Als wir uns das erste Mal trafen, hinterließen wir einen tiefen Eindruck. Die Verwendung von Schließungen erkennt die Aufrechterhaltung von Zustand und Attributen; Vermeidet das Fliegen globaler Variablen auf dem Bildschirm; Beendet die peinliche Situation, in der Variablen immer neu definiert und neu zugewiesen werden. Es kann auch ein Objekt in mehrere JS -Dateien unterteilt. Es ist wirklich toll.
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es gefällt Ihnen.