将老式的javascript实体转换成ES6类

假设我有这样的一个类:

let initPack = { player: [] }; let Player = function(param) { let self = { id: param.id, x: param.x, y: param.y } self.update = function() { self.x += 1; self.y += 1; } self.getInitPack = function() { return { id: self.id, x: self.x, y: self.y } } Player.list[self.id] = self; initPack.player.push(self.getInitPack()); return self; } Player.list = {}; 

如果我想重写这个ES6类,并把它放到node.js中的一个单独的文件,如:

 module.exports = class Player { constructor(param) { this.id = param.id; this.x = param.x; this.y = param.y; } update() { this.x += 1; this.y += 1; } getInitPack() { return { id: self.id, x: this.x, y: this.y } } } 

我怎样才能重写课程的其余部分,使其像以前一样工作? 原始文件中有一些静态成员和外部variables的使用。 但是我不确定如何在ES6中正确地做到这一点。

你会把这些东西放在构造函数中,或者像之前那样放在class旁边。

 class Player { constructor(param) { this.id = param.id; this.x = param.x; this.y = param.y; Player.list[this.id] = this; initPack.player.push(this.getInitPack()); } update() { … } getInitPack() { … } } Player.list = {}; const initPack = { player: [] }; module.exports = Player; 

但是你应该注意到,这样的全球单身存储库是一个反模式,即使你真的需要它们,你也应该把它们从build筑中解脱出来。