ES6 class 在本地范围内访问父对象

ES6 class access parent object in a local scope

访问其中定义了我的 classes 的父对象的最佳方法是什么?下面的代码被 Browserify 包装并且在全局范围内不可访问。我向 Game 对象声明了一个变量,其中包含我所有的变量和 classes。如果 class 需要访问 Game 对象,我需要做 this.game,但是有更好的方法吗?

class Foo {
    constructor() {
        this.game = Game;
        this.name = "Foo";
        this.value = 100;
    }

    accessGame() {
        return console.log(this.game);
    }
}

var Game = {};
Game.Foo = new Foo();

我是 ES6 的新手 classes,抱歉,如果这是一个愚蠢的问题,谢谢。

老实说,如果不知道你想用你的 class 做什么,很难说出最好的方法。

然而,在不知道您打算做什么的情况下,能够从 class 中访问游戏实例的一种简单方法是在初始化时将其作为参数传递。

class Foo {
    constructor(game) {
        this.game = game;
        this.name = "Foo";
        this.value = 100;
    }

    accessGame() {
        return console.log(this.game);
    }
}

var Game = {};
Game.Foo = new Foo(Game);

Game.Foo.accessGame()

但请注意,您可以通过多种不同的方式来完成此操作,而最佳方式取决于 'foo' 与您的游戏的具体关系。

你也可以储存一个大师class'loader'或'app' 并根据静态引用添加一个getter。

例子

class _coreLoader {
    constructor () {
    };

    getClass(className){
        switch (className) {
            case 'Scene_Boot'      : return Scene_Boot      ; break;
            case 'Scene_IntroVideo': return Scene_IntroVideo; break;
            case 'Scene_Menu'      : return Scene_Menu      ; break;
        };
    };

这里的示例 const myclass = $Loader.getClass('Scene_Boot') 将起作用。 但是您需要手动存储所有参考。