js深拷贝

function deepClone (obj = {}) {
    // 判断不是数组或对象直接返回
    if (typeof obj !== 'object' || obj == null) {
        console.log('不是对象或者数组')
        return obj
    };
    // 初始化返回结果
    let result
    if (obj instanceof Array) {
        result = []
        console.log('数组')
    } else {
        result = {}
        console.log('对象')
    };

    for (let key in obj) {
        console.log(obj[key])
        // 保证key不是原型的属性
        if (obj.hasOwnProperty(key)) {
            // 递归
            result[key] = deepClone(obj[key])
        }
    }
    // 返回结果
    return result
}
var obj1 = {
    aaa: 'aaa',
    bbb: 'bbb'
}

var obj2 = deepClone(obj1)
obj2[0] = 'name'
obj2[1] = 'class'
console.log(obj2)
console.log(obj1)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容