03. Class Methods
Тело класса может содержать только методы, но не данные. Классы не могут иметь статические данные.
Тело класса может содержать функции трех видов:
constructor() {}
- тело конструктораstatic
-методы - статические функции, помеченные ключевым словомstatic
являются свойствами самого класса и не записываются в свойство-prototype
.Обычный метод будет доступен на всех экземплярах этого класса (записываются в свойство-
prototype
создаваемого объекта).
Методы, объявленные внутри class
имеют ряд особенностей:
Методы являются именно методами, то есть имеет доступ к
super
иthis
.Все методы класса работают в режиме
use strict
, даже если он не указан.Все методы класса не перечислимы. То есть в цикле
for..in
по объекту их не будет.В классах, как и в обычных объектах, можно объявлять геттеры и сеттеры через
get
/set
, а также использовать[field]
для свойств с вычисляемыми именами.В теле класса нельзя описать его поля, только в конструкторе. Дело в том, что определения в теле класса попадают в его прототип, а там должны быть только функции.
Можно объявлять статические функции классов, используя ключевое слово
static
.
Class Constructor
Псевдо-функция constructor
соответствует поведению функции-конструктора из ES5:
Функция
constructor
запускается при создании объекта при помощиnew
.Если конструктор не указан, то используется пустая функция.
Как и в обычных конструкторах,
this
в теле конструктора ссылается на создаваемый объект.Можно подменить возвращаемое значение, указав явное значение
return
.
Static Functions
Метод, объявленный с ключевым словом static
объявляется на самой функции конструкторе, а не на прототипе.
Классы не могут иметь полей или статических данных в своем объявлении, но их можно добавить после определения, либо использовать функции-геттеры.
Last updated
Was this helpful?