1、浅拷贝
let obj1 = { ?a: 1, ?b: 2}let obj2 = obj1obj2.b = 3console.log(obj1) ?// { a: 1, b: 3 }console.log(obj1 === obj2) //true
2、深拷贝
function deepCopy(obj) { ??if(typeof obj === "object") { ??????if(obj.constructor === Array) { ??????????var newArr = [] ??????????for(var i = 0; i < obj.length; i++) newArr.push(obj[i]) ??????????return newArr ??????} else { ??????????var newObj = {} ??????????for(var key in obj) { ??????????????newObj[key] = this.deepCopy(obj[key]) ??????????} ??????????return newObj ??????} ??} else { ??????return obj ??}}//理解版
let obj1 = { ?a: ‘1‘, ?b: ‘2‘, ?c: { ???d: ‘3‘ ?}, ?d: function aa () {}}function deepCopy (obj) { //简化后 ?let temp = obj.constructor === Array ? [] : {} ?for (let val in obj) { ???temp[val] = typeof obj[val] == ‘object‘ ? deepCopy(obj[val]) : obj[val] ?} ?return temp}console.log(deepCopy(obj1)) //{ a: ‘1‘, b: ‘2‘, c: { d: ‘3‘ }, d: [Function: aa] }
js 浅与深拷贝
原文地址:https://www.cnblogs.com/vhen/p/8185112.html