我想知道表单的表达式new super.SomeProperty
在 JavaScript 中是否有效。
这个问题是在处理跨浏览器行为不一致的代码时出现的,如下面的代码片段中的示例。
class Test {
test() {
return new super.constructor;
}
}
console.log((new Test).test());
这会在 Firefox 和 Edge 中打印一个空对象,但ReferenceError
在 Chrome 和SyntaxError
Safari 中会抛出一个。该错误可以很容易地通过使用括号super.constructor
或使用变量来规避,因此这不是真正的限制,而是对语言本身的好奇问题。我检查了规范,但找不到任何暗示在这种情况下应该抛出错误的东西,所以我很可能遗漏了一些东西。