ES6 классы
Нет, ничего не изменилось, прототипы никуда не ушли, а классы лишь приятная обёртка над прототипным наследованием. В классическом понимании классов в JavaScript никогда не существовало и не будет существовать никогда. Многие разработчики, особенно те, которые решили познать мир JavaScript после изучения другого языка программирования, не понимают (или не хотят понять) разницы между классическим и прототипным наследованием, в результате чего они буквально отказываются полностью использовать самый мощный инструмент, которым только может вооружиться JavaScript-разработчик. Поэтому данная статья, в первую очередь, призвана объяснить, почему классы, появившиеся в новом стандарте языка, не то, чем кажутся на первый взгляд.
Объектно-ориентированный JavaScript: дескрипторы
Над каждым свойством любого объекта в JavaScript можно провести определённый набор манипуляций. Свойство можно записать, изменить, получить значение, а с помощью цикла for .. in
или метода Object.keys
перечислить все свойства объекта. Вполне стандартный набор операций для работы с объектами, к которому вы, скорее всего, уже привыкли. До релиза стандарта ES5 все эти "качества" объекта изменить было невозможно, но теперь для каждого свойства можно детально описать модель его поведения с помощью дескрипторов.
Объектно-ориентированный JavaScript: наследование на практике
В одной из прошлых статей мы подробно рассмотрели процесс создания библиотеки для валидации данных, полученных из поля ввода. Библиотека хорошо работает и справляется со своей задачей. Тем не менее, если оценить библиотеку в более глобальном масштабе, то можно заметить, что она состоит из двух частей: валидации данных и коммуникации с DOM. В этой статье разберём процесс создания конструктора-родителя, который будет отвечать только за валидацию переданных ему данных, после чего напишем дочерний конструктор, который будет заниматься "грязной" работой: получать данные от DOM элементов, писать сообщения и запускать callback функции.
Дайджест лучших материалов за февраль
Дайджест лучших материалов из группы за второй месяц 2016 года
Объектно-ориентированный JavaScript: наследование
Наследование в JavaScript постоянно подвергается критике. Что, на самом деле, не удивительно — люди, привыкшие к понятию "класс", обычно просто не могут сходу понять, какой мощный инструмент попал в их руки и пытаются применить свои знания о классовом наследвании в JavaScript. В результате разработчик остаётся недоволен — большая часть его паттернов не вписывается в прототипное наследование. Данная статья призвана объяснить, как работает прототипное наследование, чтобы ваш опыт использования JavaScript не испортился "классовыми" заблуждениями.
Объектно-ориентированный JavaScript: немного практики
Настало время применить все ваши навыки объектно-ориентированного JavaScript и создать небольшую библиотеку. Библиотека предназначена для валидации данных из одного поля ввода, содержит несколько простых встроенных методов для простых манипуляций с данными и небольшой строковый шаблонизатор для вывода понятных сообщений.
Объектно-ориентированный JavaScript: прототипы
Понимание принципов работы прототипного наследования очень важно для любого JavaScript разработчика. В этой статье расскажем, как создавать методы и свойства, которые будут доступны всем объектам, созданным с помощью одной функции-конструктора.
Объектно-ориентированный JavaScript: функции конструкторы
Итак, вам нужно создать десяток объектов с одинаковыми свойствами и методами. Как раз для этого есть функции конструкторы, которые позволят не переписывать код для каждого объекта и в значительной степени помогут сэкономить ресурсы.
Объектно-ориентированный JavaScript: работа с объектами
В прошлой статье мы выяснили, что не всё в JavaScript является объектом, и все данные разделяются на примитивы и объекты. В этой статье рассмотрим способы создания объектов, что такое методы, свойства, как их присваивать, способы итерации по всем свойствам объектов и использование ключевого слова this
.
Объектно-ориентированный JavaScript: примитивы и объекты
Скорее всего, вы читали или слышали, что всё в JavaScript является объектом. Ещё чаще можно увидеть опровержения этого утверждения. Подобные споры возникают регулярно и обусловлены в большей степени недопониманием концепций JavaScript. И, на самом деле, причина считать примитивы объектами есть — примитивы имеют свойства и методы, поведение которых во многом схоже со свойствами и методами объектов. В статье рассмотрим, чем примитивы, на самом деле, отличаются от объектов и почему это так важно.