超级函数如何访问子类中的另一个超级函数?

问题描述 投票:0回答:1

//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
        });
    }
}

嗨,正如您在上面的代码中看到的,我在父类中有两个函数,在子类中有一个函数。在子类内部的run函数中,我可以使用关键字“super”访问tokenize。但是,我也需要访问fixDates函数,但我确实收到了这个错误:“'super'关键字在这里意外”。如果有人帮助我会很棒。提前致谢

javascript node.js class superclass
1个回答
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');
© www.soinside.com 2019 - 2024. All rights reserved.