Javascript “可以”;超级";是否在子类的方法中使用,以便在不直接引用的情况下调用超类的相应方法?
我在书中遇到了一个“super”的用法,这似乎很奇怪Javascript “可以”;超级";是否在子类的方法中使用,以便在不直接引用的情况下调用超类的相应方法?,javascript,ecmascript-6,Javascript,Ecmascript 6,我在书中遇到了一个“super”的用法,这似乎很奇怪super()在子类的方法get()中使用,以调用超类的方法get(),而不使用任何访问器符号。这样行吗?如果是,我在哪里可以找到更多关于它的参考资料 编辑: 感谢@FlexiKling和@sorenymous键入代码:)不,直接super调用(不带属性)只允许在构造函数中进行,并且在其他任何地方都会造成语法错误。它必须是super.get() 您参考的教程来自2013年。在类语法建议的早期版本中,这种形式确实是可能的。但是,它在以下情况下被删
super()
在子类的方法get()
中使用,以调用超类的方法get()
,而不使用任何访问器符号。这样行吗?如果是,我在哪里可以找到更多关于它的参考资料
编辑:
感谢@FlexiKling和@sorenymous键入代码:)不,直接
super
调用(不带属性)只允许在构造函数中进行,并且在其他任何地方都会造成语法错误。它必须是super.get()
您参考的教程来自2013年。在类语法建议的早期版本中,这种形式确实是可能的。但是,它在以下情况下被删除:
没有紧跟其后的属性说明符的super现在在所有MethodDefinition中都是非法的(不再使用当前方法名的隐式super)
我测试了你的代码,它产生了一个语法错误
class Answer {
constructor(value) {
this._val = value;
}
get() {
return this._val;
}
}
class FirmAnswer extends Answer {
constructor(value) {
super(value);
}
get() {
return super() + '!!';
}
}
var luckyAnswer = new FirmAnswer(7);
luckyAnswer.get();
控制台输出:
Uncaught SyntaxError:“super”关键字此处意外
如果您可以发布实际代码,而不是指向代码图像的链接,这将有所帮助。请把你的问题包括在内。还要链接教程,这是它的来源。@Bergi,它需要大量的键入:/n没关系,你还是应该这样做。这不是一个可以从原始来源复制粘贴的文本截图吗?我宁愿删除这个问题,也不愿键入它。这是来自视频。感谢您的快速回答,因为我不知道答案,除非您提供参考,否则我无法接受您的答案。您可以在符合ES6标准的环境中试用,检查或查看:-)希望您不介意我的补充!如果您不喜欢,请删除或更改它:)(我很抱歉!)@FelixKling:谢谢,请随意编辑我的任何答案:-)
class Answer {
constructor(value) {
this._val = value;
}
get() {
return this._val;
}
}
class FirmAnswer extends Answer {
constructor(value) {
super(value);
}
get() {
return super() + '!!';
}
}
var luckyAnswer = new FirmAnswer(7);
luckyAnswer.get();