我找到了这个用于复制对象的 JavaScript 代码,代码正在做它应该做的事情,但我不明白的是函数何时调用自身;为什么newObject在第一次迭代中没有丢失它的值,它应该在函数调用自身并创建一个新的时被覆盖newObject?这是否意味着当一个函数调用自身时,它仍然保留newObject在它调用自身之前创建的第一个副本?const o = { a: 'a', b: 'b', obj: { key: 'key', },}const o2 = oo2.a = 'new value'// o and o2 reference the same objectconsole.log(o.a)// this shallow-copies o into o3const o3 = Object.assign({}, o)// deep copyfunction 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)
添加回答
举报
0/150
提交
取消