前端面试题 - 赋值/浅拷贝/深拷贝的区别?如何实现一个深拷贝?
- 赋值是拷贝的对象指针,整个对象都是共用的。
- 浅拷贝是拷贝一层,对象的内容仍是共用的,
Object.assign()
,拓展运算符都是浅拷贝。 深拷贝是递归拷贝深层次,
JSON.stringify()
是深拷贝,但是会忽略undefined、symbol和函数。// 一个简单的深拷贝 function clone(target) { if (typeof target === 'object') { let cloneTarget = Array.isArray(target) ? [] : {}; // 考虑数组 for (const key in target) { cloneTarget[key] = clone(target[key]); } return cloneTarget; } else { return target; } };
通俗易懂的前端面试题网站: https://www.front-interview.com
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。