You don't know js(up & going)


Download 424.95 Kb.
Pdf ko'rish
bet40/53
Sana08.11.2023
Hajmi424.95 Kb.
#1757840
1   ...   36   37   38   39   40   41   42   43   ...   53
Bog'liq
You don\'t know JS(up & going)

____________________________________________________________________
Теперь подробней о том, как работает этот код:
1. Когда мы вызываем `makeAdder(1)`, мы получаем обратно ссылку на ее
внутреннюю `add(..)`, которая запоминает `x` как `1`. Мы назвали эту ссылку на
функцию `plusOne(..)`.
2. Когда мы вызываем `makeAdder(10)`, мы получаем обратно ссылку на ее
внутреннюю `add(..)`, которая запоминает `x` как `10`. Мы назвали эту ссылку на
функцию `plusTen(..)`.
3. Когда мы вызываем `plusOne(3)`, она прибавляет `3` (свою внутреннюю `y`) к
`1` (которая запомнена в `x`), и мы получаем в качестве результата `4`.
4. Когда мы вызываем `plusTen(13)`, она прибавляет `13` (свою внутреннюю `y`)
к `10` (которая запомнена в `x`), и мы получаем в качестве результата `23`.
Не волнуйтесь, если всё это кажется странным и сбивающим по началу с толку —
это нормально! Понадобится много практики, чтобы всё это полностью понять.
Но поверьте мне, как только вы это освоите, это будет одной из самых мощных и
полезных техник во всем программировании. Определенно стоит приложить
усилия, чтобы ваши мозги немного покипели над замыканиями. В следующем
разделе, мы немного попрактикуемся с замыканиями.
Модули
Самое распространенное использование замыкания в JavaScript — это
модульный шаблон. Модули позволяют определять частные детали реализации
(переменные, функции), которые скрыты от внешнего мира, а также публичное
API, которое *доступно* снаружи.
Представим:
____________________________________________________________________
function User(){
var username, password;
function doLogin(user,pw) {
username = user;
password = pw;


// сделать остальную часть работы по логину
}
var publicAPI = {
login: doLogin
};
return publicAPI;
}
// создать экземпляр модуля `User`
var fred = User();
fred.login( "fred", "12Battery34!" );

Download 424.95 Kb.

Do'stlaringiz bilan baham:
1   ...   36   37   38   39   40   41   42   43   ...   53




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling