浅拷贝和深拷贝

            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:简单数据类型相等不是引用地址

posted @ 2020-06-17 08:32  幻星缈宇  阅读(157)  评论(0)    收藏  举报