PDF+code DJVU+code
1IK-fMEKJqYBHMbntAAt65ONkXaP-C-S
Глава 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.islnteger(number) 45
Метод Number.isNaN(value) 45
Метод Number.isFinite(number) 46
Метод Number.isSafelnteger(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
Функция ends!With(string, index) 55
Нормализация 55
Шаблонные строки 57
Выражения 57
Массивы 60
Метод Array.from(iterable, mapFunc, this) 60
Метод Array.of (values .) 61
Метод fill(value, startlndex, endlndex) 61
Метод find(testingFunc, this) 62
Метод findlndex(testingFunc, this) 63
Метод cop/Mthin(targetlndex, startlndex, endlndex) 63
Методы entriesO, keys() и values() 64
Коллекции 64
Буферные массивы 65
Типизированные массивы 67
Объект Set 68
Объект WeakSet 69
Объект Мар 69
Объект WfeakMap 70
Объект Object 71
Свойство__proto 71
Метод Object.is(value 1, 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
Метод Ref!ect.defineProperty(object, property, descriptor) 114
Метод Ref lect.deleteProperty( object, property) 117
Метод Reflect.enumenate(object) 118
Метод Ref lect.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
Метод ReflectpreventExtensions(object) 121
Метод Reflect.ownKeys(object) 122
Итоги 122
Глава 6. Использование прокси-объектов 123
Основы прокси-объектов 123
Терминология 124
Программный интерфейс Proxy API 124
Ловушки 125
Метод Proxy.revocable(target, handler) 137
Возможный сценарий использования 136
Использование прокси 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
Common JS 164
Универсальное определение модуля 164
Реализация модулей - новый подход 165
Создание модулей ES6 166
Импорт модулей в ES6 167
Загрузчик модулей 169
Использование модулей в браузерах 169
Использование модулей в функции eval() 170
Экспорт по умолчанию или экспорт по именам 170
Пример 170
Итоги 172
Предметный указатель 173
Ссылка битая, дайте пожалуйста свежую
Исправлено