Кайл Симпсон - Замыкания и объекты
Название: | Замыкания и объекты | |
Автор: | Кайл Симпсон | |
Жанр: | Учебники и самоучители по компьютеру, Java, Java Script | |
Изадано в серии: | Бестселлеры o’reilly, Вы пока еще не знаете JS | |
Издательство: | Питер | |
Год издания: | 2019 | |
ISBN: | 978-5-4461-1255-5 | |
Отзывы: | Комментировать | |
Рейтинг: | ||
Поделись книгой с друзьями! Помощь сайту: донат на оплату сервера |
Краткое содержание книги "Замыкания и объекты"
Каким бы опытом программирования на JavaScript вы ни обладали, скорее всего, вы не понимаете язык в полной мере. Это лаконичное, но при этом глубоко продуманное руководство познакомит вас с областями видимости, замыканиями, ключевым словом this и объектами — концепциями, которые необходимо знать для более эффективного и производительного программирования на JS. Вы узнаете, почему они работают и как замыкания могут стать эффективной частью вашего инструментария разработки. Как и в других книгах серии «Вы не знаете JS», здесь показаны нетривиальные аспекты языка, от которых программисты JavaScript предпочитают держаться подальше. Вооружившись этими знаниями, вы достигнете истинного мастерства JavaScript. 16+
Читаем онлайн "Замыкания и объекты". [Страница - 19]
полезно взглянуть в другом направлении: вы берете произвольный
фрагмент кода, написанный вами, и заключаете его в объявление
функции, что фактически «скрывает» код от наблюдателя.
На практике вокруг кода создается область видимости, это означает, что любые объявления (переменные или функции) в этом
коде теперь будут связаны с областью видимости новой функцииобертки (вместо прежней внешней области видимости). Иначе
говоря, можно «скрывать» переменные и функции, заключая их
в функциональную область видимости.
Для чего может быть полезно «скрывать» переменные и функции?
Существует множество причин для подобной маскировки на базе
области видимости. Обычно они происходят от «принципа наименьших привилегий»1 при проектировании программных продуктов.
Этот принцип гласит, что при проектировании программного
продукта (например, API модуля/объекта) следует предоставлять
1
https://ru.wikipedia.org/wiki/Принцип_минимальных_привилегий.
60
Глава 3. Функциональные и блочные области видимости
доступ только к тому, что абсолютно необходимо, и «скрывать»
все остальное.
Этот принцип распространяется на выбор области видимости,
содержащей переменные и функции. Если все переменные и функции будут находиться в глобальной области видимости, конечно,
они будут доступны для любой вложенной области видимости.
Однако это нарушит «принцип наименьших привилегий», поскольку вы (с большой вероятностью) будете предоставлять доступ ко многим переменным и функциям, которые следовало бы
оставить недоступными, так как при правильном использовании
кода доступ к этим переменным/функциям будет нежелателен.
Пример:
function doSomething(a) {
b = a + doSomethingElse( a * 2 );
console.log( b * 3 );
}
function doSomethingElse(a) {
return a - 1;
}
var b;
doSomething( 2 ); // 15
Вероятно, в этом фрагменте переменная b и функция doSome
thingElse(..) относятся к «приватным» подробностям того, как
doSomething(..) делает свою работу. Предоставление «доступа» к b
и doSomethingElse(..) внешней области видимости не только излишне, но и, скорее всего, опасно в том отношении, что они могут
быть использованы непредвиденным образом (намеренно или нет),
и это может нарушить предусловия doSomething(..). В более «правильной» архитектуре эти приватные подробности реализации
будут скрыты в области видимости doSomething(..), примерно так:
Предотвращение конфликтов
61
function doSomething(a) {
function doSomethingElse(a) {
return a - 1;
}
var b;
b = a + doSomethingElse( a * 2 );
}
console.log( b * 3 );
doSomething( 2 ); // 15
Теперь b и doSomethingElse(..) недоступны для внешнего влияния,
ими распоряжается только doSomething(..). Функциональность
и конечный результат не изменились, но архитектура скрывает
приватные детали. Такой код обычно считается более качественным.
Предотвращение конфликтов
Другое преимущество «сокрытия» переменных и функций внутри
области видимости — предотвращение случайных конфликтов
между идентификаторами с одинаковыми именами, но разным
предполагаемым использованием. Конфликты часто приводят
к непреднамеренной перезаписи значений.
Пример:
function foo() {
function bar(a) {
i = 3; // изменение `i` в цикле for внешней области
// видимости
console.log( a + i );
}
62
}
Глава 3. Функциональные и блочные области видимости
for (var i=0; i --">
Книги схожие с «Замыкания и объекты» по жанру, серии, автору или названию:
Кайл Симпсон - Типы и грамматические конструкции Жанр: Учебники и самоучители по компьютеру Год издания: 2019 Серия: Бестселлеры o’reilly |
Кайл Симпсон - Познакомьтесь, JavaScript Жанр: Java, Java Script Год издания: 2022 Серия: Библиотека программиста |
Кайл Симпсон - Асинхронная обработка и оптимизация Жанр: Java, Java Script Год издания: 2019 Серия: Бестселлеры o’reilly |
Билл Любанович - Простой Python. Современный стиль программирования Жанр: Программирование: прочее Год издания: 2016 Серия: Бестселлеры o’reilly |
Другие книги из серии «Бестселлеры o’reilly»:
Кеннет Рейтц, Таня Шлюссер - Автостопом по Python Жанр: Python Год издания: 2017 Серия: Бестселлеры o’reilly |
Лейн Кэмпбелл, Черити Мейджорс - Базы данных. Инжиниринг надежности Жанр: Базы данных Год издания: 2020 Серия: Бестселлеры o’reilly |
Флоран Бюиссон - Анализ поведенческих данных на R и Python Жанр: Python Год издания: 2022 Серия: Бестселлеры o’reilly |
Робин Никсон - Создаем динамические веб-сайты с помощью PHP, MySQL, JavaScript, CSS и HTML5 Жанр: PHP Год издания: 2023 Серия: Бестселлеры o’reilly |