Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript “可以”;超级";是否在子类的方法中使用,以便在不直接引用的情况下调用超类的相应方法?_Javascript_Ecmascript 6 - Fatal编程技术网

Javascript “可以”;超级";是否在子类的方法中使用,以便在不直接引用的情况下调用超类的相应方法?

Javascript “可以”;超级";是否在子类的方法中使用,以便在不直接引用的情况下调用超类的相应方法?,javascript,ecmascript-6,Javascript,Ecmascript 6,我在书中遇到了一个“super”的用法,这似乎很奇怪super()在子类的方法get()中使用,以调用超类的方法get(),而不使用任何访问器符号。这样行吗?如果是,我在哪里可以找到更多关于它的参考资料 编辑: 感谢@FlexiKling和@sorenymous键入代码:)不,直接super调用(不带属性)只允许在构造函数中进行,并且在其他任何地方都会造成语法错误。它必须是super.get() 您参考的教程来自2013年。在类语法建议的早期版本中,这种形式确实是可能的。但是,它在以下情况下被删

我在书中遇到了一个“super”的用法,这似乎很奇怪
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();