[JavaScript]还在用递归遍历或者通过JSON深拷贝对象?试试structuredClone方法
啥也不说,直接上链接:https://developer.mozilla.org/zh-CN/docs/Web/API/structuredClone
如果你懒得点,那只要知道下面的东西就行了。
全局的 structuredClone()
方法使用结构化克隆算法将给定的值进行深拷贝,说人话就是使用了 JavaScript 内部的一种算法深拷贝对象。这个内部的方法其实也是递归,它有一些限制,不能拷贝一些东西,这些距离咱们码农很远,一般不用考虑。如果你很好奇,结构化克隆算法的介绍在这里:
结构化克隆算法:
https://developer.mozilla.org/zh-CN/docs/Web/API/Web_Workers_API/Structured_clone_algorithm
返回值就是你想要的那个东西:新对象:
structuredClone 的语法如下:
structuredClone(value)
structuredClone(value, { transfer })
可选参数 transfer
是啥?是可转移对象数组。啥是可转移对象数组?大概是跟内存有关的数据,例如 arrayBuffer
之类的,一般情况下也用不到。介绍在这里:
可转移对象:
https://developer.mozilla.org/zh-CN/docs/Glossary/Transferable_objects
structuredClone
示例如下:
let obj = { x: 1 };
let newObj = structuredClone(obj);
console.log(obj === newObj); //false
END