Sobes.tech
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(); // Ошибка, метод недоступен

Таким образом, поля могут быть доступны напрямую, а методы — скрыты. Но стоит помнить, что публичные методы — это часть интерфейса класса, и обычно их делают доступными для взаимодействия с объектом.