12 вещей, которые нужно знать о классах и прототипах в JavaScript.

Цель этого поста — сказать простыми словами о том, чем объекты и прототипы JavaScript отличаются от обычных для ООП классов и объектов, и почему модель JavaScript является более гибкой, чем классическая для ООП.

  1. В JavaScript всё ведёт себя, как объект.
  2. Абсолютно любая функция может вести себя как конструктор при помощи слова new. constr = new Func ();
  3. Абсолютно любой (даже пустой) объект может выступать в роли прототипа.
  4. Прототип имеется у каждого объекта. Например, для конструктора прототип по умолчанию — это пустой объект.
  5. Прототип — это не что-то особенное, как, например, «класс» в других языках. Это просто обычный объект, без каких-то дополнительных свойств или методов.
  6. Как ведет себя сущность в JavaScript делится между конструктором (любая функция, которая отвечает за создание и инициализацию сущности) и прототипом (задает поведение сущности)
  7. Любое разделяемое между объектами поведение определяется их прототипом. Например, если требуется иметь много объектов с одним и тем же методом, его лучше определить на прототипе.
  8. Ключевое слово this в методе, определенном на прототипе, но используемом на объекте с этим прототипом, ссылается на сам объект.
  9. Свойства и методы, уникальные для объекта, определяются в конструкторе.
  10. Любые свойства и методы прототипа доступны непосредственно в объектах, имеющих этот прототип.
  11. Свойства и методы прототипа могут переопределяться в конструкторе или непосредственно на объекте.
  12. Прототипная модель в JavaScript позволяет реализовать классическое наследование и поведение класс-объект в ООП, но также даёт делать более гибкие вещи.

 

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.