我使用“ class”关键字构建了一个类,并且为游戏中的每个玩家设置了单独的统计信息,该类还具有计算/更新每个新统计信息的方法。我要保存它,这要归功于JSON + localStorage方法,并且在我加载它时,我得到的东西包含了我需要的所有统计信息,但是它不再具有该类的方法。
基本上,在加载每个统计信息之后,由于 proto 属性,我试图重新影响方法,我获得了预期的结果,但是它使游戏的速度超出了预期,我知道了原因通过阅读本文。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/proto
所以类总结如下
class Player {
constructor(name) {
this.name = name || "";
this.goals = 0;
updateGoals(){
if (gameStats.scorers.hasOwnProperty(this.name))
this.goals += gameStats.scorers[this.name];
}
}
我将每个新的Players放入一个对象中
let Stats = {};
Stats[name] = new Player(name);
它在第一次尝试时效果很好,但是,当我想加载JSON时,我保存了以下信息:
let Stats = JSON.parse(localStorage.getItem("Players_Stats"));
我收到“ Stats.player.updateGoals不是函数”
我之前描述的解决方案是这条线
function loadStats(){
let Stats = {};
if (localStorage.getItem("Players_Stats")){
Stats = JSON.parse(localStorage.getItem("Players_Stats"));
for (let player in Stats) {
if (Stats.hasOwnProperty(player)) {
Stats[player].__proto__ = Player.prototype;
}
}
}
return Stats;
}
至少它可以正常工作,但是由于链接较高的原因而很慢。
最后,我希望每个加载的播放器都具有可以使用它的类方法。 谢谢