?

javascript_от_javascript.ru
документация от Ильи Кантора на javascript

Язык JavaScript

Введение

Введение в JavaScript

Справочники и спецификации

Редакторы для кода

Консоль разработчика

Основы JavaScript

Привет, мир!

Внешние скрипты, порядок исполнения

Структура кода

Современный стандарт, "use strict"

Переменные

Правильный выбор имени переменной

Шесть типов данных, typeof

Основные операторы

Операторы сравнения и логические значения

Побитовые операторы

Взаимодействие с пользователем: alert, prompt, confirm

Условные операторы: if, '?'

Логические операторы

Преобразование типов для примитивов

Циклы while, for

Конструкция switch

Функции

Функциональные выражения

Рекурсия, стек

Именованные функциональные выражения

Всё вместе: особенности JavaScript

Качество кода

Отладка в браузере Chrome

Советы по стилю кода

Как писать неподдерживаемый код?

Автоматические тесты при помощи chai и mocha

Структуры данных

Введение в методы и свойства

Числа

Строки

Объекты как ассоциативные массивы

Объекты: перебор свойств

Объекты: передача по ссылке

Массивы с числовыми индексами

Массивы: методы

Массив: перебирающие методы

Псевдомассив аргументов "arguments"

Дата и Время

Замыкания, область видимости

Глобальный объект

Замыкания, функции изнутри

[[Scope]] для new Function

Локальные переменные для объекта

Модули через замыкания

Управление памятью в JavaScript

Устаревшая конструкция "with"

Методы объектов и контекст вызова

Методы объектов, this

Преобразование объектов: toString и valueOf

Создание объектов через "new"

Дескрипторы, геттеры и сеттеры свойств

Статические и фабричные методы

Явное указание this: "call", "apply"

Привязка контекста и карринг: "bind"

Функции-обёртки, декораторы

Некоторые другие возможности

Типы данных: [[Class]], instanceof и утки

Формат JSON, метод toJSON

setTimeout и setInterval

Запуск кода из строки: eval

Перехват ошибок, "try..catch"

ООП в функциональном стиле

Введение

Внутренний и внешний интерфейс

Геттеры и сеттеры

Функциональное наследование

ООП в прототипном стиле

Прототип объекта

Свойство F.prototype и создание объектов через new

Встроенные "классы" в JavaScript

Свои классы на прототипах

Наследование классов в JavaScript

Проверка класса: "instanceof"

Свои ошибки, наследование от Error

Примеси

Современные возможности ES-2015

ES-2015 сейчас

Переменные: let и const

Деструктуризация

Функции

Строки

Объекты и прототипы

Классы

Тип данных Symbol

Итераторы

Set, Map, WeakSet и WeakMap

Promise

Генераторы

Модули

Proxy

Документ, события, интерфейсы

Документ и объекты страницы

Окружение: DOM, BOM и JS

Дерево DOM

Работа с DOM из консоли

Навигация по DOM-элементам

Поиск: getElement* и querySelector* и не только

Внутреннее устройство поисковых методов

Свойства узлов: тип, тег и содержимое

Современный DOM: полифиллы

Атрибуты и DOM-свойства

Методы contains и compareDocumentPosition

Добавление и удаление узлов

Мультивставка: insertAdjacentHTML и DocumentFragment

Метод document.write

Стили, getComputedStyle

Размеры и прокрутка элементов

Размеры и прокрутка страницы

Координаты в окне

Координаты в документе

Итого

Основы работы с событиями

Введение в браузерные события

Порядок обработки событий

Объект события

Всплытие и перехват

Делегирование событий

Приём проектирования "поведение"

Действия браузера по умолчанию

Генерация событий на элементах

События в деталях

Мышь: клики, кнопка, координаты

Мышь: отмена выделения, невыделяемые элементы

Мышь: движение mouseover/out, mouseenter/leave

Мышь: Drag'n'Drop

Мышь: Drag'n'Drop более глубоко

Мышь: колёсико, событие wheel

Мышь: IE8-, исправление события

Прокрутка: событие scroll

Клавиатура: keyup, keydown, keypress

Загрузка документа: DOMContentLoaded, load, beforeunload, unload

Загрузка скриптов, картинок, фреймов: onload и onerror

Формы, элементы управления

Навигация и свойства элементов формы

Фокусировка: focus/blur

Изменение: change, input, cut, copy, paste

Формы: отправка, событие и метод submit

Создание графических компонентов

Введение

Графические компоненты

Вёрстка графических компонентов

Шаблонизатор LoDash

Коллбэки и события на компонентах

Что изучать дальше

Дополнительно

Веб-компоненты: взгляд в будущее

С высоты орбитального полёта

Пользовательские элементы: Custom Elements

Shadow DOM

Шаблоны ˂template˃

Стили и селекторы

Импорты

Веб-компонент в сборе

AJAX и COMET

Введение в AJAX и COMET

Node.JS для решения задач

Основы XMLHttpRequest

XMLHttpRequest POST, формы и кодировка

XMLHttpRequest: кросс-доменные запросы

XMLHttpRequest: индикация прогресса

XMLHttpRequest: возобновляемая закачка

COMET с XMLHttpRequest: длинные опросы

WebSocket

Протокол JSONP

Server Side Events -- события с сервера

IFRAME для AJAX и COMET

Атака CSRF

Метод fetch: замена XMLHttpRequest

Таблица транспортов и их возможностей

Анимация

Кривые Безье

CSS-анимации

JS-Анимация

Оптимизация

Введение

Как работают сжиматели JavaScript

Улучшаем сжатие кода

Утечки памяти

Утечки памяти при использовании jQuery

Очистка памяти при removeChild/innerHTML

GCC: продвинутые оптимизации

GCC: статическая проверка типов

GCC: интеграция с Google Closure Library

Окна и Фреймы

Открытие окон и методы window

Общение между окнами и фреймами

Кросс-доменные ограничения и их обход

Общение окон с разных доменов: postMessage

Привлечение внимания к окну

Атака Clickjacking и защита от неё

CSS для JavaScript-разработчика

О чём пойдёт речь

Единицы измерения: "px", "em", "rem" и другие

Все значения свойства "display"

Свойство "float"

Свойство "position"

Центрирование горизонтальное и вертикальное

Свойства "font-size" и "line-height"

Свойство white-space

Свойство "outline"

Свойство "box-sizing"

Свойство "margin"

Лишнее место под IMG

Свойство "overflow"

Особенности свойства "height" в %

Знаете ли вы селекторы?

CSS-спрайты

Правила форматирования CSS

Сундучок с инструментами

Полезные расширения Firefox и Chrome

Скриптуемый отладочный прокси Fiddler

IE HTTP Analyzer

Регулярные выражения

Паттерны и флаги

Методы RegExp и String

Классы и спецсимволы

Наборы и диапазоны [...]

Квантификаторы +, *, ? и {n}

Жадные и ленивые квантификаторы

Скобочные группы

Обратные ссылки: \n и $n

Альтернация (или) |

Начало строки ^ и конец $

Многострочный режим, флаг "m"

Предпросмотр (неготово)

Чёрная дыра бэктрекинга

О всякой всячине

Эволюция шаблонных систем для JavaScript

Книги по JS, HTML/CSS и не только

Асинхронное выполнение: setImmediate

Позднее связывание "bindLate"

Sublime Text: шпаргалка

Выделение: Range, TextRange и Selection

Применяем ООП: Drag'n'Drop++

Куки, document.cookie

Intl: интернационализация в JavaScript

Особенности регулярных выражений в Javascript

Руководство

Стандартные объекты

Array

Boolean

Date

Error

EvalError

Function

Math

Number

Object

RangeError

ReferenceError

RegExp

String

SyntaxError

TypeError

URIError

Объекты браузера

window

Глобальные методы

alert

clearInterval

clearTimeout

confirm

decodeURI

decodeURIComponent

encodeURI

encodeURIComponent

eval

isFinite

isNaN

parseFloat

parseInt

prompt

setInterval

setTimeout

Глобальные свойства

arguments

document

Infinity

NaN

undefined

Синтаксические конструкции

break

continue

do..while

for

for..in

function

if

label

return

switch

throw

try..catch

var

while

with

Блок

Операторы

delete

function

in

instanceof

new

this

typeof

void

Аксессоры

Арифметические операторы

Запятая

Логические операторы

Операторы присваивания

Операторы сравнения

Побитовые операторы

Строковые операторы

Условный оператор

Перевод ES5 скачать по главам

...

Сторонняя документация

сторонние Справочники: Javascript/HTML/CSS