Spec-Zone.ru › JavaScript

SyntaxError: использование доступа к свойству/члену super допустимо только внутри методов или кода eval внутри методов

Исключение JavaScript "use of super property/member accesses only valid within methods or eval code within methods" возникает, когда синтаксис super.x или super[x] используется вне метода.

Сообщение

SyntaxError: 'super' keyword unexpected here (V8-based)
SyntaxError: use of super property accesses only valid within methods or eval code within methods (Firefox)
SyntaxError: super is not valid in this context. (Safari)

Тип ошибки

SyntaxError

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

Синтаксис super.x используется для доступа к свойствам прототипа текущего объекта. Он может использоваться в методах как литералов объектов, так и классов, инициализаторах полей и блоках статической инициализации, но не в других контекстах.

Примеры

Неверные случаи

Вы не можете использовать super.x вне метода в объекте:

const obj = {
  __proto__: { x: 1 },
  x: super.x, // SyntaxError: use of super property accesses only valid within methods or eval code within methods
};

Вы не можете использовать super.x в функции, даже если эта функция фактически является методом:

function getX() {
  return super.x; // SyntaxError: use of super property accesses only valid within methods or eval code within methods
}

const obj = {
  getX,
  getX2: function () {
    return super.x; // SyntaxError: use of super property accesses only valid within methods or eval code within methods
  },
};

class Derived extends Base {
  getX = () => super.x;
}

Верные случаи

Вы можете использовать super.x в методе:

class Base {
  x = 1;
}

class Derived extends Base {
  getX() {
    return super.x;
  }
}

Вы можете использовать super.x в инициализаторе поля:

class Derived extends Base {
  x = super.x;
}

Вы также можете использовать super.x в методах объекта:

const obj = {
  __proto__: { x: 1 },
  getX() {
    return super.x;
  },
};

См. также

  • Классы
  • super

© 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/Bad_super_prop

Spec-Zone.ru

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