Основы ООП на Javascript

Объект представляет собой экземпляр класса.
Javascript — это объектно-ориентированный язык, но в нём нет классов, а вместо наследования на основе классов используется наследование на основе прототипов.

Объекты создаются при помощи выражений вида

В приведённом примере за оператором new следует имя функции-конструктора MyObj.
Его главная задача, как обычно, установка всех свойств объекта перед дальнейшим использованием.

Мы создали два объекта со свойствами и методом.
Метод area не имеет особенностей реализации для разных объектов, но каждый раз создаётся заново.
Этого можно избежать, если методы и постоянные свойства определять через прототип, который существует для любого javascript-объекта и доступен через значение свойства prototype функции-конструктора. Все функции имеют свойство prototype, которое инициализируется в момент определения функции.
Любые свойства прототипа становятся свойствами объектов, созданных через конструктор.

При чтении свойства объекта сначала проводится поиск среди его свойств, а затем среди свойств объекта-прототипа.
При записи — если такого свойства у объекта нет, то оно создаётся. К прототипу обращений нет. Сделано это для того, чтобы из одного объекта не поменять свойства всех объектов, созданных через тот же конструктор.

Аналоги классических ООП-конструкций:

Свойства объекта

Методы объекта

Свойства класса

* Такая запись возможна потому, что все функции в javascript явлются объектами.

Методы класса

При этом ключевое слово this внутри метода класса ссылается на функцию-конструктор класса.

LEAVE A COMMENT