首页 > 其他 > 详细

浅拷贝和深拷贝

时间:2020-06-17 10:23:25      阅读:60      评论:0      收藏:0      [点我收藏+]
            var a = {
                    as: ‘sads‘,
                    sds: ‘sdsasd‘,
                    sadd: {
                        sads: ‘sdasd‘,
                        aaaa: ‘sdsadsa‘
                    }
                    var b = {};
                    // 直接拷贝,只是引用地址
                    b = a;
                    a[‘as‘] = ‘aaaaa‘;
                    // console.log(b)

                    // 浅拷贝,只拷贝第一层
                    for (var i in a) { //i 为key值
                        b[i] = a[i]
                    }
                    console.log(b)

                    // 语法糖浅拷贝
                    Object.assign(b, a)

                    //深拷贝
                    function deep(a, b) {
                        for (var i in a) {
                            var item = a[i]
                            if (item instanceof Array) {//数组也会被instanceof判断为object,需要先判断
                                b[i] = [];
                                deep(b[i], item)
                            } else if (item instanceof Object) {
                                b[i] = {};
                                deep(b[i], item)
                            } else {
                                b[i] = item;
                            }
                        }
                    }

 ps:简单数据类型相等不是引用地址

浅拷贝和深拷贝

原文:https://www.cnblogs.com/huang131/p/13150384.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!