关于javascript:手写深浅拷贝

浅拷贝

function shallowCopy(obj) {
    if (!obj) return obj;
    // 只拷贝对象
    if (typeof obj !== 'object') {
        return
    }
    var newObj = Array.isArray(obj) ? [] : {}
    for(var key in obj) {
        if (obj.hasOwnProperty(key)) {
            newObj[key] = obj[key]
        }
    }
    return newObj
}

深拷贝

function deepCopy(obj) {
    if (!obj) return obj;
    // 只拷贝数组和对象
    if (typeof obj !== 'object') {
        return
    }
    var newobj = Array.isArray(obj) ? []: {};
    for (var key in obj) {
        if (obj.hasOwnProperty(key)) {
            newobj[key] = (typeof obj[key] === 'object') ? deepCopy(obj[key]) : obj[key]
        }
    }
    return newobj
}

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理