手写深浅拷贝

Posted 前端茅台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了手写深浅拷贝相关的知识,希望对你有一定的参考价值。

浅拷贝

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
}

以上是关于手写深浅拷贝的主要内容,如果未能解决你的问题,请参考以下文章

js手写深拷贝的实现

高频重要前端API手写整理(call,apply,bind,instanceof,flat,filter,new,防抖,节流,深浅拷贝,数组乱序,数组去重,继承, lazyman,jsonp的实现,函

深浅拷贝

深浅拷贝

《关于JavaScript的深浅拷贝》

python--is/id==,集合,深浅拷贝