我有一个关于Typescript的问题this
:
我有两个类,其中一个类想从另一个类调用一个方法:
class Calculator {
foo: number;
constructor(foo: number) {
this.foo = foo;
}
public write() {
return "abc";
}
}
要求调用方法的类:
class Game {
calc: Calculator;
constructor() {
// this is working fine
this.calc = new Calculator(1);
}
create() {
for (var index = 0; index < 5; index++) {
// here this.calc is undefined and I don't know why
}
}
}
然后在我的创建方法中,我总是this.calc
是undefined
,我不知道为什么。
然后我这样称呼它:
window.onload = () => {
var game = new Game();
};
create
方法是通过Phaser.Game
来调用的,这是一个游戏库。
答案 0 :(得分:0)
它工作正常,这是我编译的一个片段,表明您的其他班级可以使用this.calc
访问附加到它的计算器,然后我打印出来自Calculator.write()
的值
class Calculator {
foo: number;
constructor(foo: number) {
this.foo = foo;
}
public write() {
return "abc";
}
}
class Game {
calc: Calculator;
constructor() {
// this is working fine
this.calc = new Calculator(1);
}
create() {
for (var index = 0; index < 5; index++) {
console.log(this.calc.write()); // this.calc works just fine here
}
}
}
var game = new Game();
game.create(); // this logs "abc" 5 times in the console
答案 1 :(得分:0)
如果您未完成此操作,可以使用:
var that = this.game.state.getCurrentState() as ConstructorState;
that.calc..
答案 2 :(得分:0)
对this
的引用可能会丢失。尝试将方法签名更改为绑定实例变量:
create = () => {
for (var index = 0; index < 5; index++) {
// here this.calc is undefined and I don't know why
}
}