Javascript Web音频API-克隆音频缓冲区

Javascript Web音频API-克隆音频缓冲区,javascript,clone,web-audio-api,audiobuffer,Javascript,Clone,Web Audio Api,Audiobuffer,我有一个deepClone函数,我在整个程序中使用该函数克隆一个对象的所有属性和值,并返回克隆的对象(见下面的代码)。我现在想在对象中包含一个audioBuffer,并将其成功复制到返回的对象中。有没有办法修改函数以包含此功能 注意:并非所有传递到deepClone功能的对象都会包含audioBuffer,因此它应该能够处理并成功克隆有或无对象。 Edit:有人能想出一种方法将JSON.parse(JSON.stringify(object))与作为答案之一提供的解决方案结合起来吗?也就是说,在

我有一个
deepClone
函数,我在整个程序中使用该函数克隆一个对象的所有属性和值,并返回克隆的对象(见下面的代码)。我现在想在对象中包含一个
audioBuffer
,并将其成功复制到返回的对象中。有没有办法修改函数以包含此功能

注意:并非所有传递到
deepClone
功能的对象都会包含
audioBuffer
,因此它应该能够处理并成功克隆有或无对象。

Edit:有人能想出一种方法将
JSON.parse(JSON.stringify(object))
与作为答案之一提供的解决方案结合起来吗?也就是说,在进行克隆时检查对象的属性,
if(property==“trackBuffer”)
以与其他对象不同的方式克隆它?

deepClone
功能:

function deepClone (object) {
   return JSON.parse(JSON.stringify(object));
};
/**
*用于深度对象克隆的实用函数
*                                                                                                                                                                               
*@param{object}obj要克隆的对象
*@返回{object}深度克隆对象
*/
功能克隆(对象){
返回JSON.parse(JSON.stringify(object));
};
//创建音频上下文
var context=新的AudioContext();
//创建空音频缓冲区
var audioBuffer=context.createBuffer(2205044100);
//创建要克隆的对象
可变磁道={
prop1:“val1”,
prop2:“val2”,
trackBuffer:audioBuffer
};
//克隆前记录
log(“克隆前,跟踪:\n”,跟踪);
//克隆轨道
var clonedTrack=deepClone(track);
//克隆后记录

log(“克隆后,克隆跟踪:\n”,克隆跟踪)我认为下面的代码对于克隆对象很有用

function clone(obj) {
    if (null == obj || "object" != typeof obj) return obj;
    var copy = obj.constructor();
    for (var attr in obj) {
        if (obj.hasOwnProperty(attr)) copy[attr] = obj[attr];
    }
    return copy;
}
请注意,下面的链接给出了带描述的答案。

我担心这会引发错误
TypeError:调用它
Arrangement.findByIdAndUpdate(doc.\u id,{$set:deepClone(doc)},function(err,result){}时无法设置未定义的属性'$\\\\\\\\\\\\\\\\\\\(使用MongoDB的mongoose驱动程序)。关于你链接的答案的其他建议会引发其他错误,你可能会想到对该函数的任何其他修改?你愿意查找数据并更新MongoDB克隆数据吗?如果我完全诚实,我不确定你的问题是什么意思,对不起。你的意思是我应该从那个update语句中去掉
deepClone
函数吗?我说的是
Arrangement.findByIdAndUpdate(doc.\u id,{$set:deepClone(doc)},函数(err,result){})您是否愿意使用deepClone功能从mongodb克隆对象,并在mongodb中再次保存修改后的对象?是的,当然,我正在尝试任何方法:)