当前位置: 首页>数据库>正文

前端面试题 - 赋值浅拷贝深拷贝的区别?如何实现一个深拷贝?

前端面试题 - 赋值/浅拷贝/深拷贝的区别?如何实现一个深拷贝?

  • 赋值是拷贝的对象指针,整个对象都是共用的。
  • 浅拷贝是拷贝一层,对象的内容仍是共用的,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


https://www.xamrdz.com/database/63s1932758.html

相关文章: