超级函数如何访问子 class 中的另一个超级函数?
How a super function can access another super function inside a child class?
//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
});
}
}
你好,
正如您在上面的代码中看到的,我在父 class 中有两个函数,在子 class 中有一个函数。在子 class 内的 运行 函数中,我可以使用关键字 "super" 访问 tokenize。但是,我也需要访问 fixDates 函数,但我确实收到此错误:“'super' keyword unexpected here”。如果有人帮助我,那就太好了。提前致谢
需要在子class的构造函数中调用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');
//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
});
}
}
你好, 正如您在上面的代码中看到的,我在父 class 中有两个函数,在子 class 中有一个函数。在子 class 内的 运行 函数中,我可以使用关键字 "super" 访问 tokenize。但是,我也需要访问 fixDates 函数,但我确实收到此错误:“'super' keyword unexpected here”。如果有人帮助我,那就太好了。提前致谢
需要在子class的构造函数中调用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');