美文网首页前端面试题大全
「前端面试题 03 浅拷贝与深拷贝」

「前端面试题 03 浅拷贝与深拷贝」

作者: 悬笔e绝 | 来源:发表于2018-05-30 21:15 被阅读0次

    一.浅拷贝

    1.常见的情况

    (1)对象等引用类型的赋值

    (2)ES6新增的Object.assign() ,详细可见阮一峰老师的书;

    (3)自己写一个

    2.浅拷贝的问题

    引用同一块内存,修改新的值会影响旧的;


    二.深拷贝

    1.最简单常见的一种方法

    const newObj = JSON.parse(JSON.stringify(oldObj));

    !该方法问题:

    (1)无法实现对函数,稀疏数组,正则等特殊对象的拷贝

    (2)会抛弃对象的constructor,所有的构造函数都指向了object。

    (3)对象有循环引用,会报错。

    ~ 补充知识点--稀疏数组的概念:

    数组元素的索引不一定要连续的,它们之间可以有空缺。每个javaScript数组都有一个length属性。针对非稀疏数组,该属性就是数组元素的个数;针对稀疏数组,length比所有元素的个数要大。

    2.递归实现一个深拷贝:

    3.总之,自己写一个完美的深拷贝函数,需要考虑很多种不同的情况,还是比较麻烦的,实际生产环境中,直接使用lodash的_.cloneDeep实现深度克隆就好;

    相关文章

      网友评论

        本文标题:「前端面试题 03 浅拷贝与深拷贝」

        本文链接:https://www.haomeiwen.com/subject/sknxsftx.html