我尝试在mainClass中调用classA的函数。然后我尝试在classA中调用mainClass的函数。我尝试使用.bind()和.call(),但它不起作用。它只适用于我在函数上使用.bind(this)或.call(this),但在尝试实例化新类时却不行。
index.js
let ClassA = require('./ClassA')
class mainClass {
constructor() {
this.doSomething()
}
doSomething() {
let classA = new ClassA().call(this)
classA.doSomething()
}
aFunction() {
console.log('done')
}
}
new mainClass()
classA.js
module.exports = class ClassA {
constructor() {
}
doSomething() {
console.log('doSomething')
this.doSomething2()
}
doSomething2() {
this.aFunction() // main Class
}
}
TypeErrpr:this.doSomething2不是函数
答案 0 :(得分:0)
在评论中你澄清了你想要做的事情(这也是问题中的代码评论):
如何从classA调用aFunction()呢?
您可以通过将ClassA中的代码提供给您的实例来实现。您可以将其传递给构造函数,该构造函数可以将其保存为实例属性,也可以将其传递给doSomething
。
以下是将其传递给构造函数的示例:
class ClassA {
constructor(obj) { // ***
this.obj = obj; // ***
}
doSomething() {
console.log('doSomething');
this.doSomething2();
}
doSomething2() {
this.obj.aFunction(); // ***
}
}
class mainClass {
constructor() {
this.doSomething();
}
doSomething() {
let classA = new ClassA(this);
classA.doSomething();
}
aFunction() {
console.log('done');
}
}
new mainClass();