js 深拷贝/浅拷贝

一、浅拷贝
原生js:

var newArr=[];
var oldArr=[1,2,3];
Object.assign(newArr,oldArr);

jquery实现:

var newArr=[];
var oldArr=[1,2,3];
newArr = $.extend(true,[],oldArr)

二、深拷贝

function deepClone(obj) {
    let result = typeof  obj.splice === "function" ? [] : {};
    if (obj && typeof obj === 'object') {
        for (let key in obj) {
            if (obj[key] && typeof obj[key] === 'object') {
            	//如果对象的属性值为object的时候,递归调用deepClone,即在吧某个值对象复制一份到新的对象的对应值中。
                result[key] = deepClone(obj[key]);
            } else {
              //如果对象的属性值不为object的时候,直接复制参数对象的每一个键值到新的对象对应的键值对中。
                result[key] = obj[key];
            }

        }
        return result;
    }
    return obj;
}

var newArr=[];
var oldArr=[1,2,3];
newArr = deepClone(oldArr);

相关文章:
1、深拷贝的三种实现方式
2、js对象的深拷贝

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章