Os fechamentos de JavaScript são uma coisa muito interessante. Depois de ler algumas informações relacionadas //www.vevb.com/article/29472.htm, a coisa mais impressionante é: ele percebe público e privado.
A sintaxe mais fácil para criar um fechamento não anônimo é:
A cópia do código é a seguinte:
var obj = (function () {// vários códigos});
O exemplo mais clássico de fechamentos:
A cópia do código é a seguinte:
var makecounter = (function () {
var i = 1;
this.test = function () {
console.log (i);
i ++;
}
devolver isso;
});
var obj = makecounter ();
obj.test (); // 1
obj.test (); // 2
var obj1 = makecounter ();
obj1.test (); // 1
obj1.test (); // 2
Privado e público:
A cópia do código é a seguinte:
var makecounter = (function () {
var i = 1;
// Isso é privado
Função log () {
console.log (i);
i ++;
}
// esse cara é público
this.test () {
registro();
}
devolver isso;
});
var obj = makecounter ();
obj.test (); // 1
obj.test (); // 2
obj.log (); //indefinido
Função auto-executiva:
A primeira vez que vi esse código, senti: tão avançado;
A cópia do código é a seguinte:
var obj = (função (janela) {
// Uma variedade de códigos
}(janela));
Então fui ao Google e descobri que eles costumam escrever assim:
A cópia do código é a seguinte:
var obj = (function () {
var i = 1;
this.test = function () {
console.log (i);
i ++;
}
devolver isso;
} ());
obj.test (); // 1
obj.test (); // 2
O entendimento mais simples é que os programadores são preguiçosos e escrevem duas etapas em uma etapa.
A cópia do código é a seguinte:
// Esta é uma função. Deve usar obj () como este
var makecounter = function () {
// Uma variedade de códigos
}
// Este é um objeto. É semelhante ao var obj = makecounter ();
var obj = (function () {
// Uma variedade de códigos
} ());
Também pode ter parâmetros:
A cópia do código é a seguinte:
var output = "novo teste";
var obj = (função (msg) {
this.test = function () {
console.log (msg);
}
devolver isso;
}(saída));
obj.test ();
Também pode ser mais complexo e avançado:
A cópia do código é a seguinte:
var output = "novo teste";
var obj = (function (obj, msg) {
// Esse cara também é privado. Semelhante ao obj.i (! = Obj.i), mas não obj.i (porque é inacessível externamente).
var i = 1;
//privado
Função log () {
console.log (i + ":" + msg);
i ++;
}
//público
obj.test = function () {
registro();
}
retornar obj;
} (obj, saída));
obj.test (); // 1: novo teste
obj.i = 100;
// eu não fui alterado
obj.test (); // 2: novo teste
A primeira vez que nos conhecemos, deixamos uma impressão profunda. O uso de fechamentos realiza a manutenção de estado e atributos; evita o voo de variáveis globais na tela; termina a situação embaraçosa, onde as variáveis são sempre redefinidas e reatribuídas. Ele também pode segmentar um objeto em vários arquivos JS. É realmente ótimo.
O exposto acima é o conteúdo inteiro deste artigo, espero que gostem.