JavaScript - один из самых популярных языков программирования в мире. Чтобы использовать его эффективно, мы должны знать его основы.

В этой статье мы рассмотрим объекты JavaScript и наследование.

Статические члены

Классы JavaScript могут иметь статические члены.

Они являются общими для всех экземпляров класса.

Мы указываем, что что-то статично, с помощью ключевого слова static.

Например, мы можем написать:

class Cat {
  static type() {
    return 'cat';
  }
}

У нас есть статический метод type, который мы вызываем напрямую с классом:

Cat.type()

Тогда получаем 'cat'.

Также мы можем написать:

class Cat {}
Cat.type = 'cat';

чтобы добавить статическое свойство к классу.

Поскольку свойства не могут находиться внутри класса, мы должны прикрепить его снаружи.

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

В JavaScript мы можем создавать подклассы для наследования методов от общего родительского класса, добавляя при этом элементы, уникальные для подкласса.

Например, мы можем написать:

class Cat {
  speak() {
    //...
  }
}
class NiceCat extends Cat {
  fly() {
    //...
  }
}

Мы используем ключевое слово extends, чтобы указать, что мы наследуем члены от класса Cat в нашем NiceCat подклассе.

Метод speak доступен для обоих классов, а метод fly доступен только в классе NiceCat.

Чтобы вызвать конструктор и методы родительского класса, мы можем использовать ключевое слово super.

Например, мы можем вызвать родительский конструктор, написав:

class Cat {
  constructor(name) {
    this.name = name;
  }
  speak() {
    //...
  }
}
class NiceCat extends Cat {
  constructor(name, color) {
    super(name);
    this.color = color;
  }
  fly() {
    //...
  }
}

NiceCat имеет ключевое слово super для вызова конструктора Cat с параметром name.

Он должен предшествовать всему, что изменяет текущий класс.

Итак, у нас есть вызов super перед установкой свойства color.

Для вызова методов родительского класса мы также используем ключевое слово super.

Например, мы можем использовать его следующим образом:

class Cat {
  constructor(name) {
    this.name = name;
  }
  speak(words) {
    return words;
  }
}
class NiceCat extends Cat {
  constructor(name, color) {
    super(name);
    this.color = color;
  }
  fly() {
    //...
  }
  niceSpeak(words) {
    return `nice cat says ${super.speak(words)}`
  }
}

Мы добавили niceSpeak метод, который вызывает Cat метод speak с помощью super.speak.

экземпляр

Мы можем использовать оператор instanceof, чтобы узнать, произошел ли объект от определенного класса.

Левый операнд - это объект, который мы хотим проверить, а правый операнд - это класс или конструктор.

Например, мы можем написать:

console.log(new NiceCat('joe', 'brown') instanceof Cat);

Тогда мы получим true, поскольку это экземпляр Cat.

Аналогично, если мы напишем:

console.log(new NiceCat('joe', 'brown') instanceof NiceCat);

Мы также получили бы true журнал.

Заключение

Классы могут иметь статические члены.

Мы можем использовать ключевое слово static для обозначения статических методов.

Если нам нужны статические свойства, мы можем прикрепить их непосредственно к классу.

Мы можем использовать ключевое слово extends для создания подкласса класса.

Оператор instanceof полезен для проверки того, является ли объект экземпляром конструктора.

JavaScript на простом английском языке

Понравилась эта статья? Если да, то получите больше похожего контента, подписавшись на наш канал YouTube в Decoded!