We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
const obj1 = { x: 1, y: { m: 1 } }; const obj2 = JSON.parse(JSON.stringify(obj1)); console.log(obj1) //{x: 1, y: {m: 1}} console.log(obj2) //{x: 1, y: {m: 1}} obj2.y.m = 2; //修改obj2.y.m console.log(obj1) //{x: 1, y: {m: 1}} 原对象未改变 console.log(obj2) //{x: 2, y: {m: 2}}
缺点:
function clone(target, map = new WeakMap()) { if (typeof target === "object") { let cloneTarget = Array.isArray(target) ? [] : {}; if (map.has(target)) { return map.get(target); } map.set(target, cloneTarget); for (const key in target) { cloneTarget[key] = clone(target[key], map); } return cloneTarget; } return target; }
解决循环引用问题,我们可以额外开辟一个存储空间,来存储当前对象和拷贝对象的对应关系,当需要拷贝当前对象时,先去存储空间中找,有没有拷贝过这个对象,如果有的话直接返回,如果没有的话继续拷贝,这样就巧妙化解的循环引用的问题。
深拷贝参考链接
The text was updated successfully, but these errors were encountered:
No branches or pull requests
介绍一下Javascript中的深浅拷贝
如何实现浅拷贝
如何实现深拷贝
JSON.parse(JSON.stringify())
缺点:
手写深拷贝
为何使用WeakMap
实现深拷贝需要注意哪些问题
如何解决循环引用的问题
解决循环引用问题,我们可以额外开辟一个存储空间,来存储当前对象和拷贝对象的对应关系,当需要拷贝当前对象时,先去存储空间中找,有没有拷贝过这个对象,如果有的话直接返回,如果没有的话继续拷贝,这样就巧妙化解的循环引用的问题。
深拷贝参考链接
The text was updated successfully, but these errors were encountered: