【发布时间】:2021-06-30 08:36:30
【问题描述】:
我正在创建一个包含许多对象的游戏,这些对象都有自己的函数可以调用。我有一个对象不做任何事情,只是用于克隆,当这个对象被克隆时,除了函数被克隆。 x-y 以及其他类似的重量和强度都被克隆了。但这些功能不会被克隆。我用来克隆的方法是这样的。
objects[1] = JSON.parse(JSON.stringify(objects[0]))
这不是我尝试过的唯一克隆方法,但它们都给了我相同的结果。我希望这可以将对象从 objects[0] 克隆到 objects[1] ,包括函数在内的所有内容。 (它们在一个数组中,所以我可以执行它们的功能)。但只克隆除函数之外的所有内容。
这是我在 node.js 中制作的一个示例。 (我没有任何可靠的代码,因为我喜欢在将它们组合在一起之前测试它是否可以工作)。
var original = {};
original.a = true;
original.b = null;
original.c = 82;
original.d = "a string LOL";
original.e = function() {
console.log("everything does not work?");
}
original.f = [0, "a", true, false];
console.log(original)
console.log(JSON.stringify(original));
console.log(JSON.stringify(JSON.parse(JSON.stringify(original))));
【问题讨论】:
-
转换为 JSON 后不能保留函数,因为 JSON 是字符串。
-
@evolutionxbox 字符串并不重要,只是对象不会被克隆,我证明我尝试过的方法不起作用。
-
字符串不重要是什么意思?这就是为什么使用 JSON 不起作用的原因......
-
我所说的字符串并不重要,我不必使用JSON字符串,如果有其他方法,我可以做到。
-
啊,我明白了。希望给定的答案会对您有所帮助
标签: javascript object clone