13 Месяц Руки дождя 2023
В JavaScript можно создавать приватные методы, для чего имя метода начинается с символа решетки #.
Приватные поля класса пытались раньше эмулировать с помощью добавления символа подчеркивания, поэтому в старом коде можно встретить такое:
1 2 3 4 5 6 7 8 9 |
class Chest { _gold = 100; method1() { console.log("_gold = {} ", this._gold); } } const chest = new Chest(); chest.method1(); |
Поле _gold в примере выше будет публичным и доступным извне, мы просто принимаем как соглашение, что мы не будем его использовать напрямую.
Аналогичным образом можно создать поле класса с доступом только на чтение:
1 2 3 4 5 6 7 8 9 10 11 |
class Chest { _gold = 100; // фактически публичное поле. // Мы просто сами ограничиваем себя // и не используем его напрямую. get gold() { return this._gold; } } const chest = new Chest(); console.log("chest.gold = " + chest.gold); |
Но вообще в современном JavaScript должно работать через символ решётка:
1 2 3 4 5 6 7 8 9 10 11 |
class Chest { #gold = 100; // Поле #gold приватное. // Оно доступно только внутри класса get gold() { return this.#gold; } } const chest = new Chest(); console.log("chest.gold = " + chest.gold); |
В браузере Google Chrome если написать chest.#gold, это позволяет получить значение)