Los cierres de JavaScript son algo muy interesante. Después de leer información relacionada //www.vevb.com/article/29472.htm, lo más impresionante es: se da cuenta de que público y privado.
La sintaxis más fácil para crear un cierre no anónimo es:
La copia del código es la siguiente:
var obj = (function () {// varios códigos});
El ejemplo más clásico de cierres:
La copia del código es la siguiente:
var makeCounter = (function () {
var i = 1;
this.test = function () {
console.log (i);
i ++;
}
devolver esto;
});
var obj = makeCounter ();
obj.test (); // 1
obj.test (); // 2
var obj1 = makeCounter ();
obj1.test (); // 1
obj1.test (); // 2
Privado y público:
La copia del código es la siguiente:
var makeCounter = (function () {
var i = 1;
// Esto es privado
función log () {
console.log (i);
i ++;
}
// Este tipo es público
this.test () {
registro();
}
devolver esto;
});
var obj = makeCounter ();
obj.test (); // 1
obj.test (); // 2
obj.log (); //indefinido
Función de autoexecución:
La primera vez que vi tal código, sentí: tan avanzado;
La copia del código es la siguiente:
var obj = (función (ventana) {
// una variedad de códigos
}(ventana));
Luego fui a Google y descubrí que a menudo escriben así:
La copia del código es la siguiente:
var obj = (function () {
var i = 1;
this.test = function () {
console.log (i);
i ++;
}
devolver esto;
} ());
obj.test (); // 1
obj.test (); // 2
La comprensión más simple es que los programadores son perezosos y escriben dos pasos en un solo paso.
La copia del código es la siguiente:
// Esta es una función. Debería usar obj () como este
var makeCounter = function () {
// una variedad de códigos
}
// Este es un objeto. Es similar a var obj = makeCounter ();
var obj = (function () {
// una variedad de códigos
} ());
También puede tener parámetros:
La copia del código es la siguiente:
VAR Output = "Nuevo prueba";
var obj = (function (msg) {
this.test = function () {
console.log (msg);
}
devolver esto;
}(producción));
obj.test ();
También puede ser más complejo y avanzado:
La copia del código es la siguiente:
VAR Output = "Nuevo prueba";
var obj = (function (obj, msg) {
// Este tipo también es privado. Similar a obj.i (! = Obj.i), pero no obj.i (porque es inaccesible externamente).
var i = 1;
//privado
función log () {
console.log (i + ":" + msg);
i ++;
}
//público
obj.test = function () {
registro();
}
regresar obj;
} (obj, salida));
obj.test (); // 1: nueva prueba
obj.i = 100;
// No me han cambiado
obj.test (); // 2: nueva prueba
La primera vez que nos conocimos, dejamos una profunda impresión. El uso de cierres realiza el mantenimiento del estado y los atributos; evita el vuelo de las variables globales en la pantalla; Termina la vergonzosa situación en la que las variables siempre se redefinen y reasignan. También puede segmentar un objeto en múltiples archivos JS. Es realmente genial.
Lo anterior es todo el contenido de este artículo, espero que les guste.