美文网首页
浅拷贝&深拷贝(如何实现深拷贝)

浅拷贝&深拷贝(如何实现深拷贝)

作者: q_小也_p | 来源:发表于2021-11-30 11:07 被阅读0次

    js的数据类型

    主要分两大类:基本数据类型和引用数据类型。

    基本数据类型有:

    Srting/Number/Null/undefine/Boolean  占用内存大小确定,保存在栈内。

    引用数据类型:

    Object/Array  占用内存大小不确定,保存在堆内。

    深拷贝的方法

    1. JSON.parse(JSON.stringify(obj))

    比较日常又比较dirty的方法,适合json可以解读的数据

    2.利用lodash里的_.cloneDeep

    import  "_" from lodash;

    let obj = {name:'zs',age:12};

    let obj2 = _.cloneDeep(obj);

    obj2.name = 'ls'

    console.log(obj,ojb1)

    //{name:'zs',age:12},{name:'ls',age:12}

    3.jQuery —— $.clone() / $.extend()

    4.实现一个深拷贝的方法

    function deepCopy (obj) {

     var result;

     //引用类型分数组和对象分别递归

     if (Object.prototype.toString.call(obj) == '[object Array]') {

     result = []

     for (i = 0; i < obj.length; i++) {

     result[i] = deepCopy(obj[i])

     }

     } else if (Object.prototype.toString.call(obj) == '[object Object]') {

     result = {}

     for (var attr in obj) {

     result[attr] = deepCopy(obj[attr])

     }

     }

     //值类型直接返回

     else {

     return obj

     }

     return result

    }

    相关文章

      网友评论

          本文标题:浅拷贝&深拷贝(如何实现深拷贝)

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