ES6类访问本地范围内的父对象

时间:2017-08-02 13:17:11

标签: javascript scope ecmascript-6 browserify

访问定义了我的类的父对象的最佳方法是什么?后面的代码由Browserify包装,不能在全局范围内访问。我向Game对象声明了一个包含所有变量和类的变量。如果某个类需要访问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课程的新手,对不起,如果这是一个愚蠢的问题,谢谢。

2 个答案:

答案 0 :(得分:1)

如果不确切地知道你想对你的班级做什么,很难说最好的方法。

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



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'与你的游戏有关。

答案 1 :(得分:0)

您还可以存储Master类的“ loader”或“ app” 并基于静态引用添加吸气剂。

示例

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')将起作用。 但是您需要手动存储所有参考。