获取类构造函数属性及其值

时间:2019-03-31 08:47:29

标签: javascript

我使用“ 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;
}

至少它可以正常工作,但是由于链接较高的原因而很慢。

最后,我希望每个加载的播放器都具有可以使用它的类方法。 谢谢

0 个答案:

没有答案