SOURCE

var foo = {
    num: 12,
    data:[12,15,55,66]
}
// 赋值
// var foo2 = foo;
// foo2.num = 19;
// foo2.data[0] = 1
// console.log(foo2)
// console.log(foo)
// 浅拷贝
// function copy(obj) {
//     var Obj = {};
//     for(var i in obj) {
//         Obj[i] = obj[i] 
//     }
//     return Obj;
// }
// var foo3 = copy(foo)
// foo3.num = 14
// foo3.data[0] = 12
// console.log(foo3)
// console.log(foo)

// 深拷贝
function deepCopy(obj) {
    var Obj = new obj.constructor()
    if(typeof obj !== 'object') return obj
    if(obj instanceof Date) return new Date(obj)
    if(obj instanceof RegExp) return new RegExp(obj)
    for(var i in obj) {
        if(obj.hasOwnProperty(i)) {
            Obj[i] = deepCopy(obj[i])
        }
    }
    return Obj;
}
var foo4 = deepCopy(foo);
foo4.num = 55
console.log(foo4)
console.log(foo)
console 命令行工具 X clear

                    
>
console