1. 程式人生 > >js 淺與深拷貝

js 淺與深拷貝

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: 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 淺與深拷貝