我正在尝试在另一个方法内调用一个方法,但出现错误“ x不是函数”。 这些方法在同一类中。 我是node的新手,所以我完全不会收到它的错误。我的代码是:
文件app.js:
const express = require("express");
const app = express();
const pkg = require("./app/b.js");
const port = 3001;
pkg("Hi");
app.listen(port, () => console.log("app is running on port " + port));
我的b.js文件就像:
class BFile{
y(str){
// some irrelative codes
x(str)
}
x(arg){
// some code
}
}
const obj = new BFile()
module.exports = obj.y
注意:我尝试在调用x方法之前使用“ this”(例如:this.x(str);),但是“ this”未定义
答案 0 :(得分:3)
更简洁的绑定方法是在构造函数中完成。
class BFile {
constructor() {
this.y = this.y.bind(this);
this.x = this.x.bind(this);
}
y(str) {
this.x(str); // this is needed here.
}
x(arg) {
// some code
}
}
const obj = new BFile();
module.exports = obj.y;
然后您就可以使用this
了。
您可以详细了解JavaScript here (StackOverflow)或here (MDN)中bind()
的用法。
答案 1 :(得分:1)
在尝试调用当前对象的方法而不是全局方法时
您应该使用this
进行调用,这样才能从当前对象中调用它
您还需要将方法绑定到构造函数中创建的对象,或者手动将其绑定,也可以使用auto-bind
class BFile{
constructor () {
this.x = this.x.bind(this);
// Or autobind(this);
}
y(str) {
...
this.x(str);
...
}
x(arg) {
...
}
}