Как суперфункция может получить доступ к другой суперфункции внутри дочернего класса? - PullRequest
0 голосов
/ 18 сентября 2018

//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».Тем не менее, мне нужно получить доступ к функции fixDates, но я получаю эту ошибку: «супер» ключевое слово здесь неожиданно ».Было бы здорово, если бы кто-то помог мне.Заранее спасибо

1 Ответ

0 голосов
/ 18 сентября 2018

Вам нужно вызвать 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');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...