Javascript 克隆包含函数的对象

Javascript 克隆包含函数的对象,javascript,object,clone,Javascript,Object,Clone,我正在创建一个有很多对象的游戏,这些对象都有自己的函数可以调用。我有一个对象,它什么都不做,只是用于克隆,当这个对象被克隆时,除了函数外,其他所有的东西都被克隆了。x-y和其他类似的重量和强度都被克隆了。但是这些函数不会被克隆。我用于克隆的方法是这样的 objects[1]=JSON.parse(JSON.stringify(objects[0])) 这不是我尝试过的唯一一种克隆方法,但它们都给了我相同的结果。我希望这会将对象从对象[0]克隆到对象[1],包括函数在内的所有内容。(它们位于一个数

我正在创建一个有很多对象的游戏,这些对象都有自己的函数可以调用。我有一个对象,它什么都不做,只是用于克隆,当这个对象被克隆时,除了函数外,其他所有的东西都被克隆了。x-y和其他类似的重量和强度都被克隆了。但是这些函数不会被克隆。我用于克隆的方法是这样的

objects[1]=JSON.parse(JSON.stringify(objects[0]))

这不是我尝试过的唯一一种克隆方法,但它们都给了我相同的结果。我希望这会将对象从对象[0]克隆到对象[1],包括函数在内的所有内容。(它们位于一个数组中,因此我可以执行它们的函数)。但只有功能以外的所有东西都被克隆

下面是我在node.js中创建的一个示例。(我没有任何可靠的代码,因为我喜欢在把它们放在一起之前测试它是否能工作)

var-original={};
原始a=真实;
原始。b=空;
原文c=82;
original.d=“字符串LOL”;
original.e=函数(){
log(“一切都不工作?”);
}
原.f=[0,“a”,真,假];
控制台日志(原件)
log(JSON.stringify(原始));

log(JSON.stringify(JSON.parse(JSON.stringify(original)))不可能使用
JSON.stringify
对函数进行字符串化。只有一部分原语是有效的JSON。为了完整性,可以使用
toString
function
构造函数检索函数源代码,但这是混乱和不必要的

您可以使用或:

var-original={};
原始a=真实;
原始。b=空;
原文c=82;
original.d=“字符串LOL”;
original.e=函数(){
log(“一切都不工作?”);
}
原.f=[0,“a”,真,假];
var copy=Object.assign({},original);
var spread={…原始};
copy.f=[42,45];
价差f=[1,2];
copy.e();

控制台日志(原件.f,副本.f,排列.f)
最好的选择是由提供的
cloneDeep
方法。这将克隆所有原语和所有嵌套对象,并且ofc您不会丢失函数声明

一旦转换为JSON,您就不能保留函数,因为JSON是一个字符串。@evolutionxbox字符串并不重要,只是对象没有被克隆,我证明了我尝试的方法不起作用。字符串不重要是什么意思?这就是为什么使用JSON不起作用的原因……我所说的字符串并不重要,因为我不必使用JSON字符串,如果有其他方法,我可以这样做。啊,我明白了。希望给出的答案能对你有所帮助