【问题标题】:How a super function can access another super function inside a child class?超级函数如何访问子类中的另一个超级函数?
【发布时间】:2019-02-22 04:12:48
【问题描述】:

//parent class
module.exports = class Parser {
    constructor() {}
    tokenize(s) {}
    fixDates(rule) {}

}


//child class
const Parser = require('./parser');
module.exports = class ParserEn extends Parser {
    constructor() {}

    run(str) {
        super.tokenize(str.toLowerCase()).forEach(function (s) {

            //here i want to acces to another function in the parent class
            super.fixDates(rule); //I get this error: 'super' keyword unexpected here
        });
    }
}

嗨, 正如您在上面的代码中看到的,我在父类中有两个函数,在子类中有一个函数。在子类中的运行函数中,我可以使用关键字“super”访问tokenize。但是,我也需要访问 fixDates 函数,但我确实收到此错误: "'super' keyword unexpected here" 。如果有人帮助我,那就太好了。提前致谢

【问题讨论】:

    标签: javascript node.js class superclass


    【解决方案1】:

    你需要在子类的构造函数中调用super()。您还应该在 forEach 回调中使用箭头函数,以保留 this 上下文:

    class Parser {
      constructor() {}
      tokenize(s) { return [...s]; }
      fixDates(rule) { console.log(rule); }
    }
    
    class ParserEn extends Parser {
      constructor() {
        super();
      }
      run(str) {
        super.tokenize(str.toLowerCase()).forEach((s) => {
          super.fixDates(s);
        });
      }
    }
    
    const parseren = new ParserEn();
    parseren.run('foo');

    【讨论】:

      猜你喜欢
      • 2014-11-06
      • 1970-01-01
      • 2018-10-14
      • 1970-01-01
      • 1970-01-01
      • 2020-03-21
      • 1970-01-01
      • 2013-10-01
      • 1970-01-01
      相关资源
      最近更新 更多