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)
Тип ошибки
Что пошло не так?
Синтаксис 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;
},
};
См. также
© 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