πŸ§‘πŸ»‍πŸ’» 개발개발/javascript

얕은 볡사(Shallow Clone)

Seungjae Lee 2021. 6. 9. 22:57

얕은 볡사(Shallow Clone)

- Object.assign()

μš°μ„ , 객체의 속성을 볡사할 λ•Œ μ‚¬μš©ν•˜λŠ” Object.assign()μž…λ‹ˆλ‹€.

첫번째 인자둜 λ“€μ–΄μ˜€λŠ” 객체에닀가 λ‘λ²ˆμ§Έ 인자둜 λ“€μ–΄μ˜€λŠ” 객체의 ν”„λ‘œνΌν‹°λ“€μ„ λ³΅μ‚¬ν•©λ‹ˆλ‹€.

const obj = { a: 1, b: 2 } 
const target = { c: 3 } 

const copiedObj = Object.assign(target, obj) 

console.log(copiedObj) //{c: 3, a: 1, b: 2}

Object.assign()μ—κ²Œλ„ ν•œκ°€μ§€ 문제점이 μžˆλŠ”λ°μš”.

λ³΅μ‚¬ν•˜λ €λŠ” 객체의 내뢀에 μ‘΄μž¬ν•˜λŠ” κ°μ²΄λŠ” μ™„μ „ν•œ 볡사가 μ΄λ£¨μ–΄μ§€μ§€μ•ŠλŠ”λ‹€λŠ” μ μž…λ‹ˆλ‹€.

const person = { 
	age: 100, 
    name: { 
    	first: "junwoo", last: "park", 
    }, 
} 

const copied = Object.assign({}, person) 

person.age = 1000 
person.name.first = "paul" 

console.log(copied.age) // 100 
console.log(copied.name.first) // 'paul'

person객체의 ν”„λ‘œνΌν‹°λ₯Ό λ°”κΏ¨λ”λ‹ˆ, copied 객체의 ν”„λ‘œνΌν‹°κ°€ 바뀐것을 λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

 

https://junwoo45.github.io/2019-09-23-deep_clone/

 

μžλ°”μŠ€ν¬λ¦½νŠΈ 객체 λ³΅μ‚¬ν•˜κΈ°

μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ 객체λ₯Ό λ³΅μ‚¬ν•˜λŠ” 방법은 μ°Έ λ§ŽμŠ΅λ‹ˆλ‹€.

junwoo45.github.io