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')
将起作用。
但是您需要手动存储所有参考。
访问其中定义了我的 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')
将起作用。
但是您需要手动存储所有参考。