Что это такое и почему вы должны их использовать.
Что такое классы JS, как их создавать, как их использовать и почему вы должны их использовать.
Классы JavaScript — это способ создать повторно используемый конструктор объектов.
Хотя сами по себе они не являются объектами, они представляют собой альтернативу использованию функций-конструкторов, таких как эта:
function Person(first, last) { this.firstName = first; this.lastName = last; }
Это типичный способ создания многократно используемого конструктора объектов в JavaScript.
Это вернет объект, который выглядит примерно так:
{ firstName: first lastName: last }
Предположим, мы хотим создать функцию, которая будет приветствовать этого человека по имени. Есть несколько способов сделать это:
- Мы можем создать функцию поиска, которая будет искать и возвращать значение, назначенное клавише
firstName
, а затем вторую, чтобы объединить это в строку и вернуть что-то вроде“Hello first”
. - Мы можем объединить эти две функции в одну, а затем добавить ее как метод к исходной функции-конструктору.
- Мы можем объединить конструктор и метод в 1 блок путем рефакторинга функции конструктора в класс JS.
Мы собираемся выбрать вариант 3. В конце концов, именно об этом эта статья.
Как мы создаем класс JavaScript?
Сначала мы начнем с ключевого слова class
и дадим ему имя.
class Person {}
Следующим шагом является создание функции конструктора.
class Person { constructor() {} }
Теперь у нас есть функция-конструктор, принимающая параметры и создающая ключевые слова для сопряжения аргументов.
class Person { constructor(first, last) { this.firstName = first; this.lastName = last; } }
Это выведет объект в той же структуре, что и функция-конструктор, предоставленная ранее.
{ firstName: first lastName: last }
Функция конструктора будет автоматически вызываться, когда ключевое слово new
используется в классе.
Теперь мы можем добавить любые методы, которые захотим. Нам просто нужно включить их в любом месте после блока конструктора, и они будут добавлены в прототип каждого объекта, созданного с использованием этого класса.
Этот конструктор также добавляется к прототипу каждого создаваемого объекта.
Мы можем исследовать все это позже. Сначала давайте добавим метод, подобный тому, который мы описали ранее.
class Person { constructor(first, last) { this.firstName = first; this.lastName = last; } greet() { return `Hello ${this.firstName}`; } }
Мы можем добавить столько методов, сколько захотим. Например, greetLast
, который будет приветствовать кого-то, используя его фамилию.
Как мы их используем?
Я дал это 5 абзацев назад. Мы используем ключевое слово new
и вызываем только что созданный класс.
const david = new Person('David', 'F');
Теперь мы видим, что у нас есть новый объект, который выглядит так:
Мы можем видеть функцию конструктора, а также функцию приветствия как часть прототипа этого объекта. Так что же произойдет, если мы вызовем функцию (метод) greet
?
Нас встречают!
Мы также можем проверить, является ли класс функцией, а возвращаемый объект — объектом.
Чем они полезны?
(Вывод)
- Так же, как функция-конструктор, они помогают вам сэкономить время, позволяя создавать объекты с одной и той же структурой снова и снова без необходимости вводить все пары ключ-значение для каждой переменной, которую вы хотите создать, используя одну и ту же структуру.
- Проще добавить все необходимые методы в тот же блок, что и блок класса. Вместо
variable.prototype.methodName
для каждого метода. - Методы позволяют добавлять функции к каждому объекту, что экономит время, потенциально создавая функцию для всех подобных объектов.
- Упрощает отладку, так как методы находятся в блоке класса. Больше не нужно искать в коде прототипы!
- Наследование может быть полезным и может сэкономить время, если второй класс, который вы создаете, может использовать те же значения, что и предыдущие.
Хотя я не касался наследования в этой статье, ее стоит прочитать. Возможно, я расскажу о наследовании в будущей статье и, если сделаю это, дам ссылку здесь.