老实说,我不太确定从哪里开始这个问题。我将描述这种情况:我正在为 HTML5 游戏制作关卡编辑器。关卡编辑器已经可以使用了——现在我想保存/加载用这个编辑器创建的关卡。
由于这一切都是在 Javascript 中完成的(关卡编辑器和游戏),我正在考虑让保存简单地将关卡转换为 JSON 并加载,嗯......取消 jsonify 它。
问题是 - 关卡包含几种类型的对象(几种不同类型的实体,几种类型的动画对象等......)现在,每次我想向游戏中添加一个对象时,我都必须编写一个 unjsonify 方法专门针对该对象,然后修改关卡对象的 unjsonify 方法,以便它可以处理 unjsonifying 新定义的对象类型。
我不能简单地使用 JSON.parse,因为它只返回一个与原始对象具有相同键和值的对象,但它实际上并不是该类/原型的对象。那么,我的问题是,是否有一种正确的方法来做到这一点,而无需每次我想向游戏中添加新类型的对象时都必须不断修改代码?