μμ½
π
λͺ¨λ μ‘μ
μ μμ¨ μ μλ€. μ‘μ
μ νλ‘κ·Έλ¨μ μ‘΄μ¬ μ΄μ .
μ‘μ
μμ λ μ΄μ λΉΌλΌ κ³μ°μ΄ λ μμ λμ κ°μ λ°©λ².
- μ묡μ μ
μΆλ ₯ μ€μ΄κΈ°. μ΄κ²μ΄ κ³§ λͺ¨λν -> ν
μ€νΈ μ©μ΄, μ¬μ¬μ©μ± μ¦λ
- μλ―Έμλ κ³μΈ΅μΌλ‘ κ³μ°μ λΆλ₯νκΈ°.
π
μ΅μ’
μ μΌλ‘ μ½λλ ꡬλΆλ κ·Έλ£Ήκ³Ό λΆλ¦¬λ κ³μΈ΅μΌλ‘ ꡬμ±ν κ²μ.
μ΄λ₯Ό μ°μ΅νκΈ° μν΄, κ³μ°μ λλμ΄ κ³μΈ΅μ λ§λ€μ΄ λ³Έλ€.
- cartμ λν λμ : cartμ λν ꡬ쑰λ₯Ό μκ³ λμνλ μ½λ. μλ₯Ό λ€μ΄ cart ꡬ쑰λ₯Ό μλ€λ κ²μ, κ·Έκ²μ΄ μ νμ μμλ‘ κ°μ§λ λ°°μ΄μ΄λΌλ κ²μ μλ κ².
- itemμ λν λμ : λ§μ°¬κ°μ§
- λΉμ¦λμ€ κ·μΉ : λ¬΄λ£ λ°°μ‘μ κΈ°μ€, μΈκΈ μΈ‘μ λ±λ±..
- λ°°μ΄ μ νΈλ¦¬ν° : μ λ§ λ¬Έλ²μ μΌλ‘μλ§ μλ―Έκ° μλ, μ¬μ¬μ© κ°λ₯ν μ½λ μ‘°κ° κ°μ κ². (λ°°μ΄μ μμ μΆκ°νκΈ°)
λ°μ·
copy-on-write
function add_item (cart, item) {
var new_cart = cart.slice();
new_cart.push(item);
return new_cart;
}
copy-on-write β‘οΈ λ³΅μ¬μ λν λΉμ©μ΄ ν¬μ§λ μμκΉ?
- λ°°μ΄μ λ°κΎΈλ κ² λ³΄λ€λ λΆλͺ
λΉμ©μ΄ λ λ λ€. νμ§λ§ gcμ λμμ μΆ©λΆν λ°μ μ μλ€.
- κ·Έλ¦¬κ³ λ³΅μ¬λ³Έμ μ¬μ©ν λ μ»λ κ²μ΄ ν¨μ¬ λ λ§μ΄ μλ€. μ±
μ 보면μ μκ² λ κ²μ΄λ€.
λ©λͺ¨
λ μ½μ΄ λ³΄κ³ μΆλ€λ μκ°μ΄ λ λ€.
κ³μ μ΄λ° κΈ°λΆμ΄ λ€λ€κ° λλλ κ² μλκ° νλ κ±±μ μ΄ λ λ€.