如何从外部函数访问类中的构造函数成员



所以,我在JS中还是个新人。但我试着着手我的第一个更大的项目。然而,我只是不明白为什么我不能从主类之外的函数访问构造函数成员。我以为这与module.exports/require有关。所以,我就是这么做的。不过,运气不好。

以下是main.js文件中的代码:

const funcs = require('./funcs.js');
class MainClass {
constructor(omegga, config, store) {
this.omegga = omegga;
this.config = config;
this.store = store;
}
async init() { 
TestVehicle.on('cmd:test', async name => {
const dss = await this.store.get('cats'); // this works fine.
funcs.setSomething('29'); // this errors
console.log(dss);
});
}
}
module.exports = MainClass;
async stop() { }

我的函数funcs.setSomething('29'(错误。以下是funcs.js:中的函数

var MainClass = require('./main.js');
const teampo = new MainClass();
async function setSomething(argument1) {
try {
teampo.store.set('cats', argument1); // this errors
} catch(e) { console.error(e); }
}
module.exports = { setSomething };

现在,JS告诉我,有些东西似乎是未定义的。这是我收到的错误消息:

"TypeError:无法读取未定义的"的属性"set";

我想知道为什么它是未定义的?难道我不应该继承存储及其所有属性/方法吗?我已经尝试了所有的东西,比如更改require、module.exports等。但似乎不起作用。原因可能更严重,还是我犯了一个简单的错误,一直在监督?

当您在这里创建类的实例:const teampo = new MainClass();时,您没有向它传递它所需要的3件事,即

CCD_ 2。

由于您没有通过storethis.store,因此teampo.store就是undefined

使用const teampo = new MainClass();实例化类时,不会传递任何参数。构造函数将存储设置为其中一个参数(this.store = store(。由于没有store参数,因此this.store未定义。

因此,如果您随后尝试对其调用set,它将出错。

相关内容

  • 没有找到相关文章

最新更新