我将游戏类定义为单例。在游戏的构造函数中,创建了一个新的汽车实例。该汽车的构造函数会立即使用单例来显示消息。
这会创建一个无限循环,因为游戏实例尚未保存在静态变量中,因此单例创建了一个新实例,它创建了一个新的汽车,创建了一个新的实例...
在Typescript / Javascript中这是Singleton的预期行为吗?
游戏课程
class Game {
private static instance: Game;
private car : Car;
public static getInstance() {
if (! Game.instance) {
Game.instance = new Game();
}
return Game.instance;
}
private constructor() {
this.car = new Car();
}
public showMessage(str){
console.log(str);
}
}
// load
window.addEventListener("load", function() {
Game.getInstance();
});
Car.ts
class Car {
private speed:number;
constructor() {
console.log("car created");
// this causes an infinite loop!
Game.getInstance().showMessage("hey there");
}
}