RUSSIAN

JavaScript. Шаблоны

Book information

Publisher
Символ-Плюс
Year
2011
ISBN
9785932862087
Language
russian
Format
PDF
Filesize
3 MB (3110239 bytes)
Pages
\265
Time added
2022-07-10 22:37:09

Description

Разработчики серверных, клиентских или настольных приложений на JavaScript нередко сталкиваются с проблемами, связанными с объектами, функциями, наследованием и другими особенностями этого языка. Какие же приемы разработки приложений на JavaScript являются наиболее удачными? Данная книга дает ответ на этот вопрос, предлагая большое количество различных шаблонов программирования на JavaScript, таких как «единственный объект» (singleton), «фабрика» (factory), «декоратор» (decorator) и другие. Можно сказать, что они являются не только методами решения наиболее типичных задач разработки ПО, но и заготовками решений для целых категорий таких задач. Использование шаблонов при программировании на языке JavaScript имеет свои особенности. Некоторые из них, разработанные с позиций языков со строгим контролем типов, таких как C++ и Java, не могут непосредственно применяться в языках с динамической типизацией, таких как JavaScript. Для таких шаблонов в языке JavaScript имеются более простые альтернативы. Написанная экспертом по языку JavaScript Стояном Стефановым - ведущим специалистом компании Yahoo! и создателем инструмента оптимизации производительности веб-страниц YSlow 2.0, - книга включает практические советы по реализации каждого из рассматриваемых шаблонов с примерами программного кода. Автор также приводит антишаблоны - приемы программирования, которых следует но возможности избегать. Оглавление Предисловие Глава 1. Введение Шаб­лоны Java­Script: концепции Java­Script – объектно-ориентированный язык В Java­Script отсутствуют классы Прототипы Среда выполнения ECMA­Script 5 JSLint Консоль Глава 2. Основы Создание простого в сопровождении программного кода Минимизация числа глобальных переменных Проблемы, связанные с глобальными переменными Побочные эффекты, возникающие в отсутствие объявления var Доступ к глобальному объекту Шаб­лон единственной инструкции var Подъем: проблемы с разбросанными переменными Циклы for Циклы for-in Расширение встроенных прототипов (в том числе нежелательное) Шаблон switch Избегайте неявного приведения типов Не используйте eval() Преобразование строки в числос помощью parseInt() Соглашения по оформлению программного кода Отступы Фигурные скобки Местоположение открывающей скобки Пробелы Соглашения по именованию Заглавные символы в именах конструкторов Выделение слов Другие шаб­лоны именования Комментарии Документирование API Пример использования YUIDoc Пишите так, чтобы можно было читать Оценка коллегами Сжатие… при подготовке к эксплуатации Запуск JSLint В заключение Глава 3. Литералы и конструкторы Литералы объектов Синтаксис литералов объектов Создание объектов с помощью конструкторов Недостатки конструктора Object Собственные функции-конструкторы Значения, возвращаемые конструкторами Шаб­лоны принудительного использования new Соглашения по именованию Использование ссылки that Конструкторы, вызывающие сами себя Литералы массивов Синтаксис литералов массивов Странности конструктора Array Проверка массивов JSON Обработка данных в формате JSON Литералы регулярных выражений Синтаксис литералов регулярных выражений Объекты-обертки значений простых типов Объекты Error В заключение Глава 4. Функции Основы Устранение неоднозначностей в терминологии Объявления и выражения: имена и подъем Свойство name функций Подъем функций Функции обратного вызова Пример использования функции обратного вызова Функции обратного вызова и их области видимости Обработчики асинхронных событий Предельное время ожидания Функции обратного вызова в биб­лиотеках Возвращение функций Самоопределяемые функции Немедленно вызываемые функции Параметры немедленно вызываемых функций Значения, возвращаемые немедленно вызываемыми функциями Преимущества и особенности использования Немедленная инициализация объектов Выделение ветвей, выполняющихся на этапе инициализации Свойства функций – шаб­лон мемоизации Объекты с параметрами Каррирование Применение функций Частичное применение Каррирование Когда использовать каррирование В заключение Глава 5. Шаб­лоны создания объектов Пространство имен Универсальная функция для создания пространства имен Объявление зависимостей Частные свойства и методы Частные члены Привилегированные методы Нежелательный доступ к частным членам Частные члены и литералы объектов Частные члены и прототипы Объявление частных функций общедоступными методами Шаб­лон «модуль» Шаб­лон открытия модуля Модули, создающие конструкторы Импортирование глобальных переменных в модули Шаб­лон изолированного пространства имен Глобальный конструктор Добавление модулей Реализация конструктора Статические члены Общедоступные статические члены Частные статические члены Объекты-константы Шаб­лон цепочек Достоинства и недостатки шаб­лона цепочек Метод method() В заключение Глава 6. Шаб­лоны повторного использования программного кода Классические и современные шаб­лоны наследования Ожидаемый результат при использовании классического наследования Классический шаб­лон №1 – шаблон по умолчанию Обход цепочки прототипов Недостатки шаб­лона №1 Классический шаб­лон №2 – заимствование конструктора Цепочка прототипа Множественное наследование при заимствовании конструкторов Достоинства и недостатки шаб­лона заимствования конструктора Классический шаб­лон №3 – заимствование и установка прототипа Классический шаб­лон №4 – совместное использование прототипа Классический шаб­лон №5 – временный конструктор Сохранение суперкласса Установка указателя на конструктор Функция klass() Наследование через прототип Обсуждение Дополнения в стандарте ECMA­Script 5 Наследование копированием свойств Смешивание Заимствование методов Пример: заимствование методов массива Заимствование и связывание Function.prototype.bind() В заключение Глава 7. Шаб­лоны проектирования Единственный объект C использованием оператора new Экземпляр в статическом свойстве Экземпляр в замыкании Фабрика Встроенная фабрика объектов Итератор Декоратор Пример использования Реализация Реализация с использованием списка Стратегия Пример проверки данных Фасад Прокси-объект Пример Прокси-объект как кэш Посредник Пример использования шаб­лона посредника Наблюдатель Пример 1: подписка на журнал Пример 2: игра на нажатие клавиш В заключение Глава 8. Шаб­лоны для работы с деревом DOM и броузерами Разделение на составные части Работа с деревом DOM Доступ к дереву DOM Манипулирование деревом DOM События Обработка событий Делегирование событий Сценарии, работающие продолжительное время setTimeout() Фоновые вычисления (web workers) Удаленные взаимодействия XMLHttpRequest Формат JSONP Обмен данными с использованием фреймов и изображений Развертывание сценариев Java­Script Объединение сценариев Сжатие и компрессия Заголовок Expires Использование CDN Стратегии загрузки Местоположение элемента Фрагментирование средствами HTTP Динамические элементы для неблокирующей загрузки сценариев Отложенная загрузка Загрузка по требованию Предварительная загрузка сценариев Java­Script В заключение Алфавитный указатель

Similar books