μ€λ μμλ³Ό κ²μ μμ 볡μ¬(Shallow Copy)μ κΉμ 볡μ¬(Deep Copy)μ΄λ€.
μ°μ μμ 볡μ¬(Shallow Copy)μ κΉμ 볡μ¬(Deep Copy)λ₯Ό μ΄ν΄νκΈ° μν΄μλ μμ νμ (Primitive Type), μ°Έμ‘° νμ (Reference Type)μ λν΄μ μμμΌ νλ€.
μ¬μ€μ μλ°μ€ν¬λ¦½νΈλ₯Ό νμ΅νλ©° κΉμ 볡μ¬μ μμ 볡μ¬λ₯Ό νμ΅νκΈ° μν΄ λ΄ λΈλ‘κ·Έλ₯Ό κ²μμ ν΅ν΄ λ€μ΄μ¬ μ¬λλ€μ΄λΌλ©΄ μμ νμ κ³Ό μ°Έμ‘° νμ μ λν΄μ λͺ¨λ₯Ό μ¬λμ μλ€κ³ μκ°νκ³ κ·Έμ λν κΉμ λ΄μ©μ μλ΅νκ² λ€.
νμ§λ§ μ¬λ¬ μλ°μ€ν¬λ¦½νΈ κ°λ μ νμ΅νκ³ μλ μν©μ΄λΌλ©΄ λ¨Έλ¦Ώμμ΄ μμ£Ό νΌλμ€λ¬μΈ μ μμΌλ―λ‘ κ°λ³κ² ν λ² μ§κ³ λμ΄κ° 보μ.
Primitive Type
μμ νμ μ
- Number
- String
- Boolean
- Null
- undefined
κ·Έλ¦¬κ³ μΆκ°μ μΌλ‘ ES6μμ μΆκ°λ Symbol() νμ μ΄ μ‘΄μ¬νλ€.
μ΄λ° μμ νμ μ νΉμ§μ Immutableμ΄λΌλ κ²μΈλ° μμΈν λ΄μ©μ PoiemWeb-Immutableμμ νμΈνλ κ² λΉ λ₯Ό κ² κ°μμ μλ΅νκ³ , μ°λ¦¬κ° κ°μ 볡μ¬νλ€λ©΄ Pass By Value ννλ‘ λ¨μ§ κ°λ§ 볡μ¬λλ€.
μ΄λ¬ν μ½λκ° μμ λ μ°λ¦¬κ° μμμ μΌλ‘ car = 2
λΌκ³ κ°μ λ³κ²½νλ€λ©΄ κ°μ μλ‘ λ€λ₯Έ κ°μ μ μ§ν μ μκ² λλ€.
Reference Type
μλ°μ€ν¬λ¦½νΈμμ μ°Έμ‘° νμ κ°μ κ²½μ°λ
- κ°μ²΄
- λ°°μ΄
- ν¨μ
λ±μ΄ λνμ μΈ μ°Έμ‘° νμ μΌλ‘ λΆλ €μ§λ€.
μ΄λ° μ°Έμ‘° νμ μ κ°μ΄ 볡μ¬κ° λλ κ² μλλΌ ν΄λΉ κ°μ²΄κ° μ°Έμ‘°νλ μ£Όμκ° λ³΅μ¬λΌμ λ€λ₯Έ μ°Έμ‘° λ³μ(car, bike)λΌκ³ νλλΌλ μλ‘ κ°μ κ³³μ κ°λ¦¬ν€λ©° κ²°κ΅ λ μ€ νλμ μ°Έμ‘° λ³μλ₯Ό ν΅ν΄μ κ°μ λ³κ²½νκ² λλ©΄ μλ‘ κ°μ μ£Όμλ₯Ό 곡μ νλ―λ‘ λ³κ²½λλ κ°μ κ°μμ§κ² λλ€.
μ΄μ κΈ°λ³Έμ μΌλ‘ μμμΌ ν λΆλΆμ λν΄μλ μμμΌλ λ³Έλ‘ μΈ μμ 볡μ¬(Shallow Copy)μ κΉμ 볡μ¬(Deep Copy)μ λν΄μ μμ보μ.
κ·Έμ μ
μ΄κ² μ νμνλ°?
μ λν λ΅μ κ°λ¨νκ² μ μλ₯Ό ν΄μ£Όμλ©΄
μ°λ¦¬κ° μμ 볡μ¬μ κΉμ 볡μ¬μ λν΄μ μκ² λλ©΄, λ³΅μ¬ μμ μ ν΄λΉ νλ‘νΌν°μ μμ±κ³Ό λͺ¨λ λμΌν κ°μ²΄λ₯Ό κ·Έλλ‘ λ³΅μ¬νμ§λ§, μλ‘ λ€λ₯Έ(곡μ νμ§ μλ) κ°μ κ°κ² ν μ μλ κ² λ°λ‘ μ°λ¦¬μ λͺ©νμ΄λ€.
λ¨Όμ κ²°λ‘ μ μλ €μ€κ²
μμ λ³΅μ¬ : λ°λ‘ μλ«λ¨κ³μ κ°λ§ 볡μ¬
κΉμ λ³΅μ¬ : λ΄λΆμ μ‘΄μ¬νλ λͺ¨λ κ° λ³΅μ¬.
μ΄λ° νΉμ§μ κ°λλ€λ κ±Έ λ¨Όμ μΊμΉνκ³ μλμ μ€λͺ μ 보면 μ΄ν΄κ° μ’ λ λΉ λ₯΄κ² λ μ μλ€.
μμ λ³΅μ¬ (Shallow Copy)
μ°λ¦¬λ μλ‘ κ³΅μ λλ κ°μ κ±°λΆνκ³ κ°κ°μ κ°μ λ 립μ μΌλ‘ κ°κ² νκ³ μΆμ κ²μ΄λ€.
κ·ΈλΌ λ 립μ μ κ°μ κ°κ² νκ³ μΆμΌλ©΄ κ°κ°μ ν€μ κ°μ μλ‘μ΄ κ°μ²΄μ μμλ‘ μ ν΄μ€ μ μμΌλ©΄ λμ§ μμκΉ?λΌλ μκ°μμλΆν° μΆλ°νλ€.
λ³΅μ¬ νκΈ°
κ·ΈλΌ ν€μ κ°μ κ°κ°μΌλ‘ μ΄ν°λ μ΄μ μ λ리면 λμ§ μμκΉ?
μ΄ν°λ μ΄μ μ κ°κ°μ μμλ₯Ό νλνλ νμΈνλ λ°©λ²μ λ§νλ€.
μλ°μ€ν¬λ¦½νΈμ Iterator
μν μ νλ λ°©λ²μ ν¬κ² 2κ°μ§κ° μλλ° map()
μ΄λ forEach
λ₯Ό μ¬μ©νλ κ²μ΄λ€.
λ§μ½ μ°λ¦¬μκ²
let car = {
wheel: 4,
engine: 2,
color: {
sheet: 'brown',
handle: 'black',
outlook: 'white',
}
}
λΌλ κ°μ²΄κ° μμ λ, μ°μ νλ νλ keyλ₯Ό λ½μμΌ νλ€.
κ·Έλ¦¬κ³ κ·Έ keyμ ν΄λΉνλ κ°μ Object.key()
λ‘ λ½μμ¬ μ μλλ° κ·Έ λ°νμ λ°°μ΄λ‘ νλ€.
κ·ΈλΌ κ·Έ λ°°μ΄μ μλ‘μ΄ κ°μ²΄μ μ ν΄μ£Όλ©΄ 볡μ¬κ° μλ£λλ€.
μ§μ.
νμ§λ§ λ¬Έμ κ° μκΈ΄λ€.
λ§μ½ κ°μ²΄μ νλ‘νΌν°κ° κ°μ²΄λΌλ©΄??
볡μ¬κΉμ§λ μ λλλ°, μ΄μ°¨νΌ λ΄λΆμ μλ color κ°μ²΄κ° mapμ μν΄ νλ νλ λμ λλ κ±°λΌλ©΄ λΆλͺ colorμ μλ‘ μ°Έμ‘°νκ³ μμκ² λ»νλ μ΄λ κ²λ μ°λ¦¬κ° μνλ λͺ©νμ λ¬μ±νκΈ° μ΄λ €μ 보μΈλ€.
κ·ΈλΌ μ΄μ μ¬κΈ°μ κΉμ 볡μ¬μ κ°λ μ΄ λ±μ₯νλ€.
κΉμ λ³΅μ¬ (Deep Copy)
μμμ μ°λ¦¬κ° κΉμ 볡μ¬λ₯Ό ν΄μΌ νλ€κ³ νλλ° κ·ΈλΌ μ΄λ»κ² ν κΉ?
μ¬κ· νκΈ°
κ·ΈλΌ μ°λ¦¬κ° μμ 볡μ¬μμ λ΄€λ μ½λμμ νλμ© μμλ₯Ό iteration ν λ, κ°μ²΄λ₯Ό λ§λλ©΄ 볡μ¬νλ ν¨μλ₯Ό μ¬κ·μ μΌλ‘ νΈμΆνλ©΄ λμ§ μμκΉ?
μ λ΅μ΄λ€.
κ·Έλ μ§λ§ κ·Έλ¬κΈ°μ μμΈ μ¬νλ λ§κ³ λ§€λ² μΈ λλ§λ€ λΆλ¬μ¬ μ μκ² ν¨μλ₯Ό μμ±νκ±°λ λΌμ΄λΈλ¬λ¦¬μ²λΌ λ§λ€μ΄μΌ νλλ°, μ°λ¦° κ·Έ μκ°μ λ€λ₯Έ κ°λ μ λν΄μ μμ보λ κ² ν¨μ¬ κ²½μ μ μ΄λ€.
κ·ΈλΌ λ°©λ²μ΄ μμκΉ?
JSON μ΄μ©νκΈ°
κ·Έ λ°©λ²μ λ°λ‘ JSONμ μ΄μ©νλ©΄ λλ€.
μ°λ¦¬κ° κ°μ²΄λ₯Ό JSONμΌλ‘ λ§λ€κ³ ν΄λΉ JSONμ κ°μΌλ‘μ¨ μλ‘μ΄ μμμ λ£μ΄μ£Όκ² λλ€λ©΄ λμ΄λ€.
μ¬μ© λ°©λ²μ
λ³΅μ¬ λμ κ°μ²΄ = JSON.parse(JSON.stringify( λ³΅μ¬ ν¬λ§ κ°μ²΄ ));
μ¬μ€ μ΄ λ°©λ²μ μ°λ¦¬κ° μ§κΈκ» νλ κ²λ€μ 무μνκ² ν λ§νΌ κ°λ¨νμ§λ§ κ·Έλλ κ°λ¨ν¨μ ν μλ¦ λκ² λμλ€.
μ΄μ ν μ€νΈλ₯Ό ν΄λ³΄μ.
μ§μ.
μλ‘ λ€λ₯Έ κ°μ²΄μ΄λ©° κ°μ 곡μ νμ§λ μκ² λμλ€.
μ€λμ μλ°μ€ν¬λ¦½νΈμ μμ 볡μ¬μ κΉμ 볡μ¬μ λν κ°λ
μ μμ보μλλ°, μ§κΈμ΄μΌ λ¨κ³κ° ν λ¨κ³λ‘ κ°μ²΄ λ΄μ κ°μ²΄ νλμ§λ§ μ°λ¦¬κ° 리μ‘νΈλ 리λμ€λ₯Ό νκ² λλ€λ©΄ λ§κ²λ 5κ°μμ 10κ°μ λ¨κ³λ₯Ό κ±°μ³μΌ νλ κ²½μ°λ μλ€.
κ·Έλμ μ΄ κ°λ
μ΄ μλΉν μ€μν κ°λ
μΌλ‘ μκ°κ° λκ³€ νλλ° νΉμλΌλ 리μ‘νΈλ₯Ό λ°°μ°κ±°λ 리λμ€λ₯Ό λ°°μΈ λ λμ κΈμ λ³΄κ² λμλ€λ©΄ μ‘°κΈμ΄λλ§ λμμ΄ λμμΌλ©΄ μ’κ² λ€.
λκΈ