Sobes.tech
Back to questions
Junior — Middle
86

Каким образом реализуется сокрытие данных внутри класса и зачем это важно?

Answer from AI

sobes.tech AI

Сокрытие данных внутри класса в Node.js достигается с помощью областей видимости и механизмов инкапсуляции. В JavaScript (и Node.js) можно использовать:

  • Локальные переменные внутри функции-конструктора или модуля, которые недоступны извне.
  • Символы (Symbol) или приватные поля класса (с префиксом # в современных версиях).

Это важно для защиты внутреннего состояния объекта от прямого доступа и изменения извне, что помогает избежать непредвиденных ошибок и поддерживает инварианты класса.

Пример с приватным полем класса:

class User {
  #password;

  constructor(name, password) {
    this.name = name;
    this.#password = password;
  }

  checkPassword(input) {
    return input === this.#password;
  }
}

const user = new User('Alice', 'secret');
console.log(user.checkPassword('secret')); // true
console.log(user.#password); // SyntaxError: Private field '#password' must be declared in an enclosing class

Таким образом, внутренние данные защищены от прямого доступа.