function,

deepClone

FreeVue FreeVue Follow Mar 28, 2019 · 1 min read
deepClone
Share this

deepClone. 객체의 딥 클론을 작성합니다.

재귀를 사용하십시오. Object.assign() 및 빈 객체 ({})를 사용하여 원본의 얕은 복제본을 만듭니다. Object.keys() 및 Array.forEach()를 사용하여 어떤 키 - 값 쌍을 깊이 복제해야하는지 결정합니다.

const deepClone = (obj) => {
  let clone = Object.assign({}, obj)
  Object.keys(clone).forEach(
    (key) => (clone[key] = typeof obj[key] === 'object' ? deepClone(obj[key]) : obj[key]),
  )
  return Array.isArray(obj) ? (clone.length = obj.length) && Array.from(clone) : clone
}

// 예시
const a = {foo: 'bar', obj: {a: 1, b: 2}}
const b = deepClone(a) // a !== b, a.obj !== b.obj

[출처: http://30.surge.sh/]