Spec-Zone.ru › JavaScript

SyntaxError: ссылка на необъявленное приватное поле или метод #x

Исключение JavaScript "reference to undeclared private field or method #x" возникает, когда используется приватное имя, но это приватное имя не объявлено в области видимости класса.

Сообщение

SyntaxError: Private field '#x' must be declared in an enclosing class (V8-based)
SyntaxError: reference to undeclared private field or method #x (Firefox)
SyntaxError: Cannot reference undeclared private names: "#x" (Safari)

Тип ошибки

SyntaxError

Что пошло не так?

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

Примеры

Необъявленное приватное поле

Вы не можете получить доступ к приватному полю, которое не объявлено в области видимости класса.

class MyClass {
  doSomething() {
    console.log(this.#x);
  }
}

Та же ошибка возникает, если вы используете оператор in для выполнения проверки необъявленного приватного поля.

class MyClass {
  doSomething() {
    console.log(#x in this);
  }
}

Этот код, вероятно, содержит ошибки, поскольку невозможно, чтобы #x существовал в this, если он не объявлен в области видимости класса. Обратите внимание, что вы не можете динамически добавлять приватные элементы к несвязанным объектам. Вам следует либо удалить этот код, либо объявить приватное поле в области видимости класса.

class MyClass {
  #x = 0;
  doSomething() {
    console.log(this.#x);
  }
}

См. также

  • Классы
  • Приватные элементы

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Undeclared_private_field_or_method

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API