При работе с конструкторами в ES5 многие привыкли использовать функции, как объекты (они же и есть объекты) и вешать на них служебные функции:
Онлайн курс по React JS в Івано-Франківську
// Конструктор
var Person = function() {};
// Служебное значение
Person.hello = 'World';
// Служебная функция
Person.speak = function() {
console.log('I am alive!');
};
Если вы с подобной реализацией никогда не сталкивались, то обратите внимание на то, чтоподобные значения не имеют ничего общего с прототипами и доступны только при запросе непосредственно с функции (объекта):
Person.speak(); // I am alive!
var john = new Person();
john.speak(); // Ошибка: нет такого метода!
При работе с классами запись подобных свойств доступна сразу внутри класса с помощью оператораstatic
. Причем все записанные подобным образом свойства при наследовании благополучно переносятся на конструктор потомка:
class Person {
static sos() {
console.log('I really need help!');
}
}
class Artist extends Pesron {
draw(art) {
console.log(`Artist has just drawn ${art}`);
}
}
const artist = new Artist();
Person.sos(); // I really need help!
Artist.sos(); // I really need help!
artist.sos(); // artist.sos is not a function
Онлайн курс по React JS в Івано-Франківську | Frontend, обучение, уроки, ментор - ReactWarriors