Javascript 对象中包含类实例的数组的硬拷贝
我正在创建一个多层次的简单游戏。每个级别由键值对的对象表示。在每个级别中,还有一个数组,其中包含将在该级别中加载的类的新实例。到目前为止,它运行良好,但当我实现重启按钮时,程序无法再次加载这些实例,因为我已经更改了它们。所以我需要将这些实例硬拷贝到级别,当你们按下重启按钮时,你们可以再次硬拷贝它们 这是我的level对象的一个示例Javascript 对象中包含类实例的数组的硬拷贝,javascript,class,object,Javascript,Class,Object,我正在创建一个多层次的简单游戏。每个级别由键值对的对象表示。在每个级别中,还有一个数组,其中包含将在该级别中加载的类的新实例。到目前为止,它运行良好,但当我实现重启按钮时,程序无法再次加载这些实例,因为我已经更改了它们。所以我需要将这些实例硬拷贝到级别,当你们按下重启按钮时,你们可以再次硬拷贝它们 这是我的level对象的一个示例 const level4 ={ width:window.innerWidth, height:window.innerHeight, gates:[new G
const level4 ={
width:window.innerWidth,
height:window.innerHeight,
gates:[new Gate(canvas.width-20, 100,0,-2), new Gate(200, 15,4,-1)],
blocks:[new Block(50,100,0, 0, 50, 1, 2), new Block(200,200,0, 0, 50, 1, 1)],
difficulty:'easy',
id:4
};
我已经尝试用这个解析函数硬拷贝对象,但它不起作用
const parseLevel = (currentLevel) =>{
return {
width: currentLevel.width,
height: currentLevel.height,
gates: parseObjects(currentLevel.gates),
blocks: parseObjects(currentLevel.blocks),
difficulty: currentLevel.difficulty,
id: currentLevel.id
};
};
const parseObjects = (array) =>{
let newArray = [];
for(let i of array){
let newObj = Object.assign( Object.create( Object.getPrototypeOf(i)),i);
newArray.push(newObj);
}
return newArray;
};
在我的函数中,我正在加载我调用的级别:
level = parseLevel(level4);
看一看
我不知道你的门和块对象内部是如何构造的。它们可能具有无法硬拷贝的嵌套对象
var k={a:b,c:{d:c};
var j=Object.assign Object.create Object.getPrototypeOfk,k;
console.logj==k
//假的
console.logk.c==j.c
//真的看看
我不知道你的门和块对象内部是如何构造的。它们可能具有无法硬拷贝的嵌套对象
var k={a:b,c:{d:c};
var j=Object.assign Object.create Object.getPrototypeOfk,k;
console.logj==k
//假的
console.logk.c==j.c
//真的我认为简单的解决方法是将level4从常数转换为函数。这样,您可以多次调用它,并始终获得一个新实例
const level4 = () => ({
width: window.innerWidth,
height: window.innerHeight,
gates:[
new Gate(canvas.width-20, 100,0,-2),
new Gate(200, 15,4,-1)
],
blocks:[
new Block(50,100,0, 0, 50, 1, 2),
new Block(200,200,0, 0, 50, 1, 1)
],
difficulty: 'easy',
id: 4
});
我认为简单的解决方案是将level4从常量转换为函数。这样,您可以多次调用它,并始终获得一个新实例
const level4 = () => ({
width: window.innerWidth,
height: window.innerHeight,
gates:[
new Gate(canvas.width-20, 100,0,-2),
new Gate(200, 15,4,-1)
],
blocks:[
new Block(50,100,0, 0, 50, 1, 2),
new Block(200,200,0, 0, 50, 1, 1)
],
difficulty: 'easy',
id: 4
});
我不能使用JSON,因为我的类有很多方法。类的结构是很少的属性和方法。我不能使用JSON,因为我的类有很多方法。类的结构是很少的属性和方法。我花了最后一个小时来解决所有的问题,当我将我的级别重新编写为函数时,但它仍然有效。谢谢你,伙计。我花了最后一个小时来解决所有的问题,当我将我的关卡重新设置为功能时,但它仍在工作。谢谢你,伙计。