Введение в ECMAScript 6
Покупка
Тематика:
Программирование на Java
Издательство:
ДМК Пресс
Автор:
Прасти Нараян
Перевод:
Рагимов Р. Н.
Год издания: 2023
Кол-во страниц: 177
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
Профессиональное образование
ISBN: 978-5-89818-628-9
Артикул: 817126.01.99
Данная книга содержит пошаговые инструкции по использованию новых возможностей EСMAScript 6 вместо устаревших трюков и приемов программирования на JavaScript.
Книга начинается с знакомства со всеми встроенными объектами ES6 и описания создания итераторов ES6. Затем она расскажет, как писать асинхронный код с помощью ES6 в обычном стиле синхронного кода. Далее описывается использование программного интерфейса рефлексии Reflect API для исследования и изменения свойств объектов. Затем рассматривается создание прокси-объектов и их применение для перехвата и изменения поведения операций с объектами. Наконец, демонстрируются устаревшие методы модульного программирования, такие как IIFE, CommonJS, AMD и UMD, и сравниваются с модулями ES6, способными значительно увеличить производительность веб-сайтов.
Издание предназначено для программистов на JavaScript, обладающих базовыми навыками разработки, и желающим освоить новейшие возможности EСMAScript 6 для совершенствования своих программ, выполняемых на стороне клиента.
- Полная коллекция по информатике и вычислительной технике
- ДМК Пресс. Информационные системы и технологии
- ДМК Пресс. ИТ-технологии для профессионалов
- Интермедиатор. Информационные системы и технологии (сводная)
- Интермедиатор. ИТ-технологии для профессионалов (сводная)
- Программирование
- Программирование на Java
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Нараян Прасти Введение в ECMAScript 6
Learning ECMAScript 6 Learn all the new ES6 features and be among the most prominent JavaScript developers who can write efficient JS programs as per the latest standards! Narayan Prusty BIRMINGHAM - MUMBAI
Введение в ECMAScript 6 Знакомьтесь с новыми функциями ES6 и присоединяйтесь к ведущим программистам JavaScript, пишущим эффективный код JS согласно последним стандартам! Нараян Прасти Москва, 2023 2-е издание, электронное
УДК 004.438ECMAScript 6 ББК 32.973.2 П70 П70 Прасти, Нараян. Введение в ECMAScript 6 / Н. Прасти ; пер. с англ. Р. Н. Рагимова. — 2-е изд., эл. — 1 файл pdf : 177 с. — Москва : ДМК Пресс, 2023. — Систем. требования: Adobe Reader XI либо Adobe Digital Editions 4.5 ; экран 10". — Текст : электронный. ISBN 978-5-89818-628-9 Данная книга содержит пошаговые инструкции по использованию новых возможностей EСMAScript 6 вместо устаревших трюков и приемов программирования на JavaScript. Книга начинается с знакомства со всеми встроенными объектами ES6 и описания создания итераторов ES6. Затем она расскажет, как писать асинхронный код с помощью ES6 в обычном стиле синхронного кода. Далее описывается использование программного интерфейса рефлексии Reflect API для исследования и изменения свойств объектов. Затем рассматривается создание прокси-объектов и их применение для перехвата и изменения поведения операций с объектами. Наконец, демонстрируются устаревшие методы модульного программирования, такие как IIFE, CommonJS, AMD и UMD, и сравниваются с модулями ES6, способными значительно увеличить производительность веб-сайтов. Издание предназначено для программистов на JavaScript, обладающих базовыми навыками разработки, и желающим освоить новейшие возможности EСMAScript 6 для совершенствования своих программ, выполняемых на стороне клиента. УДК 004.438ECMAScript 6 ББК 32.973.2 Электронное издание на основе печатного издания: Введение в ECMAScript 6 / Н. Прасти ; пер. с англ. Р. Н. Рагимова. — Москва : ДМК Пресс, 2016. — 176 с. — ISBN 978-5-97060-3925. — Текст : непосредственный. Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Материал, изложенный в данной книге, многократно проверен. Но поскольку вероятность технических ошибок все равно существует, издательство не может гарантировать абсолютную точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности за возможные ошибки, связанные с использованием книги. В соответствии со ст. 1299 и 1301 ГК РФ при устранении ограничений, установленных техническими средствами защиты авторских прав, правообладатель вправе требовать от нарушителя возмещения убытков или выплаты компенсации. ISBN 978-5-89818-628-9 © 2015 Packt Publishing © Оформление, перевод на русский язык, ДМК Пресс, 2016
ОГЛАВЛЕНИЕ Предисловие ................................................... 10 Об авторе ........................................................ 12 О технических рецензентах ................................ 13 Введение ........................................................ 16 О чем рассказывается в этой книге ............................................... 16 Что понадобится при чтении этой книги ........................................ 17 Совместимость с ECMAScript 6 ..................................................... 18 Запуск ECMAScript 6 в несовместимых реализациях ..................... 18 Кому адресована эта книга ........................................................... 19 Соглашения .................................................................................. 19 Отзывы и пожелания ..................................................................... 20 Скачивание исходного кода примеров .......................................... 21 Нарушение авторских прав ................................................................... 21 Глава 1. Игры с синтаксисом ............................... 22 Ключевое слово let ........................................................................ 22 Объявление переменных с областью видимости в пределах функции ... 23 Объявление переменных с областью видимости в пределах блока ...... 24 Повторное объявление переменных ..................................................... 25 Ключевое слово const ................................................................... 27 Область видимости констант ............................................................... 27 Ссылки на объекты при помощи констант ............................................. 28 Значения параметров по умолчанию ............................................. 29 Оператор расширения .................................................................. 30 Другие применения оператора расширения ......................................... 31 Расширение нескольких массивов ........................................................ 32 Дополнительные параметры ........................................................ 32 Деструктивное присваивание ....................................................... 33 Деструктивное присваивание массивов ............................................... 34 Деструктивное присваивание объектов ................................................ 37 Стрелочные функции ..................................................................... 39
Оглавление Расширенные литералы объектов ................................................. 41 Определение свойств ........................................................................... 41 Определение методов .......................................................................... 41 Вычисляемые имена свойств ................................................................ 42 Итоги ............................................................................................ 42 Глава 2. Знакомство с библиотекой ..................... 43 Работа с числами .......................................................................... 43 Двоичное представление ..................................................................... 44 Восьмеричное представление ............................................................. 44 Метод Number.isInteger(number) .......................................................... 45 Метод Number.isNaN(value) .................................................................. 45 Метод Number.isFinite(number) ............................................................. 46 Метод Number.isSafeInteger(number) .................................................... 47 Свойство Number.EPSILON ................................................................... 48 Объект Math ................................................................................. 49 Тригонометрические операции ............................................................. 49 Алгебраические операции .................................................................... 49 Прочие методы .................................................................................... 50 Работа со строками ...................................................................... 52 Управляющая последовательность для больших кодовых пунктов ........ 53 Метод codePointAt(index) ..................................................................... 53 Метод String.fromCodePoint(number1, …, number 2) ............................. 53 Метод repeat(count) ............................................................................. 54 Метод includes(string, index) ................................................................. 54 Метод startsWith(string, index) ............................................................... 54 Функция endsWith(string, index) ............................................................ 55 Нормализация ..................................................................................... 55 Шаблонные строки ............................................................................... 57 Выражения ........................................................................................... 57 Массивы ....................................................................................... 60 Метод Array.from(iterable, mapFunc, this) ............................................... 60 Метод Array.of(values…) ........................................................................ 61 Метод fill(value, startIndex, endIndex) ..................................................... 61 Метод find(testingFunc, this) ................................................................. 62 Метод findIndex(testingFunc, this) ......................................................... 63 Метод copyWithin(targetIndex, startIndex, endIndex) ............................... 63 Методы entries(), keys() и values() ......................................................... 64 Коллекции .................................................................................... 64 Буферные массивы .............................................................................. 65 Типизированные массивы ..................................................................... 67 Объект Set ............................................................................................ 68 Объект WeakSet .................................................................................... 69 Объект Map .......................................................................................... 69 Объект WeakMap .................................................................................. 70 Объект Object ............................................................................... 71
Оглавление Свойство __proto__ ............................................................................... 71 Метод Object.is(value1, value2) ............................................................. 72 Метод Object.setPrototypeOf(object, prototype) ...................................... 72 Метод Object.assign(targetObj, sourceObjs…) ........................................ 72 Итоги ............................................................................................ 73 Глава 3. Использование итераторов ..................... 75 Символы в спецификации ES6 ...................................................... 75 Оператор typeof ................................................................................... 76 Оператор new ....................................................................................... 76 Использование символов как ключей свойств ....................................... 77 Метод Object.getOwnPropertySymbols() ................................................ 77 Метод Symbol.for(string) ....................................................................... 78 Встроенные символы ........................................................................... 79 Протоколы итераций .................................................................... 79 Протокол итератора ............................................................................. 79 Итерационный протокол ....................................................................... 80 Генераторы ................................................................................... 81 Метод return(value) ............................................................................... 83 Метод throw(exception) ......................................................................... 84 Ключевое слово yield* .......................................................................... 84 Цикл for…of .......................................................................................... 85 Оптимизация хвостового вызова .................................................. 86 Преобразование неконцевых вызовов в концевые вызовы .................... 87 Итоги ............................................................................................ 88 Глава 4. Асинхронное программирование ............. 89 Модель выполнения JavaScript ..................................................... 89 Разработка асинхронного кода ..................................................... 90 Асинхронный код, основанный на событиях .......................................... 91 Асинхронный код, основанный на обратных вызовах ............................ 94 Объекты Promise в помощь ............................................................ 95 Конструктор Promise ............................................................................ 96 Результат асинхронной операции ......................................................... 97 Метод then(onFulfilled, onRejected) ....................................................... 98 Метод catch(onRejected) .................................................................... 104 Метод Promise.resolve(value) .............................................................. 106 Метод Promise.reject(value) ................................................................ 107 Метод Promise.all(iterable) .................................................................. 107 Метод Promise.race(iterable) ............................................................... 108 Программные интерфейсы JavaScript, основанные на объектах Promise ....................................................................................... 109 Программный интерфейс состояния батареи ..................................... 109 Программный интерфейс веб-криптографии ..................................... 110
Оглавление Итоги .......................................................................................... 111 Глава 5. Реализация Reflect API ......................... 112 Объект Reflect ............................................................................. 112 Метод Reflect.apply(function, this, args) ............................................... 113 Метод Reflect.construct(constructor, args, prototype) ........................... 113 Метод Reflect.defineProperty(object, property, descriptor) .................... 114 Метод Reflect.deleteProperty(object, property) ..................................... 117 Метод Reflect.enumerate(object) ......................................................... 118 Метод Reflect.get(object, property, this) ............................................... 118 Метод Reflect.set(object, property, value, this)....................................... 119 Метод Reflect.getOwnPropertyDescriptor(object, property) ................... 119 Метод Reflect.getPrototypeOf(object) .................................................. 120 Метод Reflect.setPrototypeOf(object, prototype) .................................. 120 Метод Reflect.has(object, property) ..................................................... 121 Метод Reflect.isExtensible(object) ....................................................... 121 Метод Reflect.preventExtensions(object) .............................................. 121 Метод Reflect.ownKeys(object) ........................................................... 122 Итоги .......................................................................................... 122 Глава 6. Использование прокси-объектов ........... 123 Основы прокси-объектов ............................................................ 123 Терминология ..................................................................................... 124 Программный интерфейс Proxy API ............................................. 124 Ловушки ............................................................................................. 125 Метод Proxy.revocable(target, handler) ......................................... 137 Возможный сценарий использования ................................................ 138 Использование прокси ............................................................... 138 Итоги .......................................................................................... 138 Глава 7. Прогулка по классам ........................... 139 Понимание объектно-ориентированной модели JavaScript ........ 139 Типы данных JavaScript ...................................................................... 140 Создание объектов ............................................................................. 140 Понятие наследования ........................................................................ 141 Конструкторы элементарных типов данных ......................................... 145 Использование классов .............................................................. 146 Определение классов ......................................................................... 147 Методы прототипа .............................................................................. 149 Статические методы .......................................................................... 152 Реализация наследования классов ..................................................... 152 Вычисляемые имена методов ............................................................ 154 Атрибуты свойств................................................................................ 155 Классы не всплывают! ........................................................................ 155 Переопределение результата метода constructor ............................... 156
Оглавление Статическое свойство со средствами доступа Symbol.species ............ 156 Неявный параметр new.target ............................................................. 158 Использование super в литералах объектов ................................ 159 Итоги .......................................................................................... 159 Глава 8. Модульное программирование ............. 160 Введение в модули JavaScript ..................................................... 160 Реализация модулей по-старому ................................................ 161 Немедленно вызываемые функции-выражения ................................. 161 Асинхронное определение модулей .................................................... 162 CommonJS ......................................................................................... 164 Универсальное определение модуля .................................................. 164 Реализация модулей – новый подход .......................................... 165 Создание модулей ES6 ...................................................................... 166 Импорт модулей в ES6 ....................................................................... 167 Загрузчик модулей ............................................................................. 169 Использование модулей в браузерах .................................................. 169 Использование модулей в функции eval() ........................................... 170 Экспорт по умолчанию или экспорт по именам .................................. 170 Пример .............................................................................................. 170 Итоги .......................................................................................... 172 Предметный указатель .................................... 173
ПРЕДИСЛОВИЕ Прежде не было более подходящего времени для программирования на JavaScript. За последние несколько лет на наших глазах JavaScript прошел путь от языка, с которым никто не хотел иметь дела, до языка, которым все непременно желают овладеть. Разработка больших и сложных приложений для браузеров сегодня подталкивает развитие JavaScript, как никогда раньше. Фреймворки и полностью новые подходы к созданию приложений породили новые потребности в разработке на стороне клиента, и сообщество пришло к соглашению о необходимости их удовлетворения. Спецификация ECMAScript 2015 или ES6, как ее обычно назы вают, наконец-то, привела язык в соответствие с нашими высокими требованиями. Значительными приобретениями является встроенная поддержка отложенных вычислений и модульной организации, но присутствуют также и небольшие дополнения, которые делают повседневную разработку более приятной. Познакомившись поближе с приемом деструктурирования объектов, вы будете удивляться, как прежде удавалось обходиться без него, а впервые воспользовавшись стрелочной функцией, вы никогда не захотите вновь использовать «function». С помощью функции «let» вы избавитесь от сложностей с областями видимости функций и от утечки переменных, и вам реже придется биться головой о стену. ES6 – великолепный язык, совершивший невероятный скачок от носительно ES5, а упорный труд многих членов сообщества сделал возможным его использование уже сегодня, не дожидаясь полной реализации в браузерах. Существуют инструменты преобразования кода ES6 в код, совместимый со спецификацией ES5, а это значит, что будущее уже здесь, его не надо ждать еще 5 лет, как это часто бывало с JavaScript. Эта книга познакомит вас с наиболее полезными нововведениями в JavaScript и всей, доступной уже сейчас, функциональностью. Научит, как конструировать модульные приложения, используя встроенную систему модулей ES6, и как сделать код чище, лаконичнее и