打字稿单例导致无限循环

时间:2017-05-09 14:09:27

标签: typescript singleton

我将游戏类定义为单例。在游戏的构造函数中,创建了一个新的汽车实例。该汽车的构造函数会立即使用单例来显示消息。

这会创建一个无限循环,因为游戏实例尚未保存在静态变量中,因此单例创建了一个新实例,它创建了一个新的汽车,创建了一个新的实例...

在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");

    }
}

0 个答案:

没有答案