В этом руководстве вы узнаете о статических свойствах класса JavaScript и о том, как получить доступ к свойствам в статическом методе, конструкторе класса и других методах экземпляра.
Как и статический метод, статическое свойство является общим для всех экземпляров класса. Чтобы определить его, используйте ключевое слово static, за которым следует имя свойства, например:
class Item {
static count = 0;
}Чтобы получить доступ к статическому свойству, вы используете имя класса, за которым следует расширение . оператор и имя свойства. Например:
console.log(Item.count); // 0
Чтобы получить доступ к статическому свойству в статическом методе, вы используете имя класса, за которым следует расширение . оператор и имя. Например:
class Item {
static count = 0;
static getCount() {
return Item.count;
}
}
console.log(Item.getCount()); // 0Чтобы получить доступ к статическому свойству в конструкторе класса или методах экземпляра, вы используете следующий синтаксис:
className.staticPropertyName;
Или же:
this.constructor.staticPropertyName;
В следующем примере увеличивается статическое свойство count в конструкторе класса:
class Item {
constructor(name, quantity) {
this.name = name;
this.quantity = quantity;
this.constructor.count++;
}
static count = 0;
static getCount() {
return Item.count++;
}
}Когда вы создаете новый экземпляр класса Item, следующий оператор увеличивает статическое свойство count на единицу:
this.constructor.count++;
Например:
// Item class ...
let pen = new Item("Pen", 5);
let notebook = new Item("notebook", 10);
console.log(Item.getCount()); // 2В этом примере создаются два экземпляра класса Item, который вызывает конструктор класса. Поскольку конструктор класса увеличивает свойство count на единицу при каждом вызове, значение count равно двум.
Положил все это вместе:
class Item {
constructor(name, quantity) {
this.name = name;
this.quantity = quantity;
this.constructor.count++;
}
static count = 0;
static getCount() {
return Item.count++;
}
}
let pen = new Item("Pen", 5);
let notebook = new Item("notebook", 10);
console.log(Item.getCount()); // 2Заключение
- Статическое свойство класса является общим для всех экземпляров этого класса.
- Используйте ключевое слово
staticдля определения статического свойства. - Используйте
className.staticPropertyNameдля доступа к свойству в статическом методе. - Используйте
this.constructor.staticPropertyNameилиclassName.staticPropertyNameдля доступа к статическому свойству в конструкторе.
