js 淺與深拷貝
阿新 • • 發佈:2018-01-03
blog urn key eof pre for deep obj clas
1、淺拷貝
let obj1 = { a: 1, b: 2 } let obj2 = obj1 obj2.b = 3 console.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: functionaa () {} } 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 淺與深拷貝