Я хотел бы знать, допустимы ли выражения вида new super.SomeProperty
в JavaScript.
Этот вопрос возник при работе с кодом, который ведет себя непоследовательно во всех браузерах, как, например, в приведенном ниже фрагменте кода.
class Test {
test() {
return new super.constructor;
}
}
console.log((new Test).test());
Это печатает пустой объект в Firefox и Edge, но выбрасывает ReferenceError
в Chrome и SyntaxError
в Safari. Эту ошибку можно легко обойти, поставив скобки вокруг super.constructor
или используя переменную, так что это не является реальным ограничением, а скорее вопросом любопытства в отношении самого языка. Я проверил спецификацию, но не смог найти ничего, что указывало бы на то, что в этом случае должна быть выдана ошибка, поэтому, скорее всего, я что-то упустил.