假设我有这样一个类:
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
}
}
}
如何重写课程的其余部分以使其像上一部分一样工作?在原始文件中有一些静态成员和外部变量的使用。但我不确定如何在ES6中正确地做到这一点。
答案 0 :(得分:1)
您可以将这些内容放在构造函数内或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;
但是你应该注意到这样的全局单例存储是一个反模式,即使你真的需要它们,你也应该更好地将它们与构造分离。