Back to questions
Junior — Middle
85
Можно ли при использовании инкапсуляции сделать так, чтобы были доступны только поля, а остальные скрыты?
Answer from AI
sobes.tech AI
В JavaScript (Node.js) инкапсуляция обычно достигается с помощью приватных полей и методов класса. Однако сделать доступными только поля, а методы скрыть, напрямую нельзя, так как методы обычно являются частью объекта и доступны, если они публичные.
Но можно сделать поля публичными, а методы приватными, используя синтаксис приватных полей и методов (начинающихся с #), например:
class Example {
publicField = 42; // публичное поле
#privateMethod() { // приватный метод
console.log('Скрытый метод');
}
callPrivate() {
this.#privateMethod();
}
}
const obj = new Example();
console.log(obj.publicField); // 42
// obj.#privateMethod(); // Ошибка, метод недоступен
Таким образом, поля могут быть доступны напрямую, а методы — скрыты. Но стоит помнить, что публичные методы — это часть интерфейса класса, и обычно их делают доступными для взаимодействия с объектом.