手写深拷贝

87 阅读1分钟
let obj = {
    name: 'lucy',
    age: 18,
    eat: function () { return this },
    arr: ['1', '2', '3', '4', '5', '6', '7', '8', '9'],
    children: {
        name: "alice",
        age: 18
       }
}
    function deepClone(obj) {
        switch (true) {
            //基本数据类型
            case typeof obj !== 'object' && typeof obj !== 'function':
                return obj;
            //函数
            case typeof obj == 'function':
                return obj
            //数组
            case Array.isArray(obj):
                let arr = []
                for (let i = 0; i < obj.length; i++) {
                    arr[i] = deepClone(obj[i])
                }
                return arr
            //对象
            case typeof obj == 'object':
                let objs = {}
                for (let key in obj) {
                    objs[key] = deepClone(obj[key])
                }
                return objs
            default: return obj
        }
    }
    console.log(deepClone(obj)===obj);   //false