Закрытие JavaScript - очень интересная вещь. После прочтения какой -то связанной информации //www.vevb.com/article/29472.htm, самое впечатляющее в ней: он реализует государственную и частную.
Самый простой синтаксис для создания неанонимичного закрытия-это:
Кода -копия выглядит следующим образом:
var obj = (function () {// различные коды});
Самый классический пример закрытия:
Кода -копия выглядит следующим образом:
var makeCounter = (function () {
var i = 1;
this.test = function () {
console.log (i);
i ++;
}
вернуть это;
});
var obj = makeCounter ();
obj.test (); // 1
obj.test (); // 2
var obj1 = makeCounter ();
obj1.test (); // 1
obj1.test (); // 2
Частный и общественный:
Кода -копия выглядит следующим образом:
var makeCounter = (function () {
var i = 1;
// это частное
функция log () {
console.log (i);
i ++;
}
// Этот парень публичный
this.test () {
бревно();
}
вернуть это;
});
var obj = makeCounter ();
obj.test (); // 1
obj.test (); // 2
obj.log (); //неопределенный
Функция самостоятельной работы:
В первый раз, когда я увидел такой код, я почувствовал: так продвинулся;
Кода -копия выглядит следующим образом:
var obj = (function (window) {
// различные коды
}(окно));
Затем я пошел в Google и обнаружил, что они часто пишут так:
Кода -копия выглядит следующим образом:
var obj = (function () {
var i = 1;
this.test = function () {
console.log (i);
i ++;
}
вернуть это;
} ());
obj.test (); // 1
obj.test (); // 2
Самое простое понимание состоит в том, что программисты ленивы и пишут два шага на один шаг.
Кода -копия выглядит следующим образом:
// это функция. Он должен использовать obj () как это
var makeCounter = function () {
// различные коды
}
// это объект. Это похоже на var obj = makecounter ();
var obj = (function () {
// различные коды
} ());
Это также может иметь параметры:
Кода -копия выглядит следующим образом:
var output = "новый тест";
var obj = (function (msg) {
this.test = function () {
console.log (msg);
}
вернуть это;
}(выход));
obj.test ();
Это также может быть более сложным и продвинутым:
Кода -копия выглядит следующим образом:
var output = "новый тест";
var obj = (function (obj, msg) {
// Этот парень тоже приватный. Подобно obj.i (! = Obj.i), но не obj.i (потому что это недоступно внешне).
var i = 1;
//частный
функция log () {
console.log (i + ":" + msg);
i ++;
}
// public
obj.test = function () {
бревно();
}
вернуть OBJ;
} (obj, output));
obj.test (); // 1: новый тест
obj.i = 100;
// Я не был изменен
obj.test (); // 2: новый тест
В первый раз, когда мы встретились, мы оставили глубокое впечатление. Использование закрытия реализует поддержание состояния и атрибутов; избегает полета глобальных переменных на экране; заканчивается смущающая ситуация, когда переменные всегда пересматриваются и переназначены. Это также может сегментировать объект на несколько файлов JS. Это действительно здорово.
Приведенное выше содержимое этой статьи, я надеюсь, вам понравится.