【问题标题】:JavaScript - super() keyword unexceptedJavaScript - super() 关键字意外
【发布时间】:2020-03-03 10:22:56
【问题描述】:

我遇到了一个小问题,我希望有人能帮助我快速解决这个问题。这是我的代码:

class Client {
    /**
   * @param {ClientOptions} [options] Options for the client
   */
  constructor(options = {}) {
    super();
    this.lnk = "https://marketpala.glitch.me";
    this.endpoints = [
        "/commandes.json",
        "/users.json",
        "/blacklist.json",
        "/infov.json",
        "/reserved.json"
    ]
  }
}

这是导出客户端的代码:

module.exports = {
    Client: require('./client/Client')
}

这是我用来测试我的客户的代码:

const tst = require('./palamazon')
let t = new tst.Client()

这是我得到的错误:

super();
    ^^^^^

SyntaxError: 'super' keyword unexpected here

希望有人可以帮助我!

(我正在用 javascript 编码)

【问题讨论】:

  • 这能回答你的问题吗? super keyword unexpected here
  • 在这种情况下为什么要调用 super()?
  • @KoroBaka 如果您正在学习某种教程并且它告诉您编写 super(),那么您很可能应该从某些东西扩展 Client。事实上,根据你使用类的方式(只是覆盖构造函数而不添加任何其他内容)我会说它甚至有可能。

标签: javascript keyword super


【解决方案1】:

Super 关键字在继承类中用于在子类中使用它们的属性。您的课程没有从任何其他课程扩展而来,因此不接受 super

通过在构造方法中调用 super() 方法,我们调用 父的构造方法并获得对父属性的访问 和方法:

如果您的类没有从任何其他类扩展而来,则必须删除 super 方法。

检查一些细节here

【讨论】:

  • 如果该类没有扩展任何其他基类super,则应删除。
  • 可以,不用调用super
  • 如果你是一个孤儿,这就像打电话给你的父母一样。
  • @RaekhVoid 是我们可以举出的最好的例子 :)
  • TypeError: tst.Client 不是构造函数
【解决方案2】:

由于您没有扩展任何类,因此不需要 super,因此 super 调用父类构造函数,但在这种情况下,该类没有父类。

【讨论】:

    【解决方案3】:

    super() 用于在像这样从另一个类扩展一个类时调用父类的原始方法,

    class MyFirstTestClass {
        constructor() {
            console.log("Hello");
        }
    }
    
    class MySecondTestClass extends MyFirstTestClass {
        constructor() {
            super();
    
            console.log("World");
        }
    }
    
    const test = new MySecondTestClass();

    这将输出Hello,然后是World。不调用super(),只会输出World,因为第二个类的构造函数会覆盖第一个类的构造函数。

    您编写的类没有从另一个类扩展,因此super() 没有可调用的父类。

    如果这是您的意图,您应该能够通过从另一个类继承来解决您的问题,或者只需删除您调用 super() 的行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-07
      • 1970-01-01
      • 1970-01-01
      • 2015-12-11
      • 2018-09-15
      • 1970-01-01
      • 2021-06-09
      • 2011-08-25
      相关资源
      最近更新 更多