函数通过调用自身来复制 JavaScript 中的对象,需要帮助理解逻辑

我找到了这个用于复制对象的 JavaScript 代码,代码正在做它应该做的事情,但我不明白的是函数何时调用自身;为什么newObject在第一次迭代中没有丢失它的值,它应该在函数调用自身并创建一个新的时被覆盖newObject?这是否意味着当一个函数调用自身时,它仍然保留newObject在它调用自身之前创建的第一个副本?


const o = {

  a: 'a',

  b: 'b',

  obj: {

    key: 'key',

  },

}


const o2 = o


o2.a = 'new value'


// o and o2 reference the same object

console.log(o.a)


// this shallow-copies o into o3

const o3 = Object.assign({}, o)


// deep copy

function deepCopy(obj) {

  // check if vals are objects

  // if so, copy that object (deep copy)

  // else return the value

  const keys = Object.keys(obj)


  const newObject = {}


  for (let i = 0; i < keys.length; i++) {

    const key = keys[i]

    if (typeof obj[key] === 'object') {

      newObject[key] = deepCopy(obj[key])

    } else {

      newObject[key] = obj[key]

    }

  }


  return newObject

}


const o4 = deepCopy(o)


o.obj.key = 'new key!'

console.log(o4.obj.key)


心有法竹
浏览 103回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript