Immutable API λμ μ ν΅ν μν λ¬΄κ²°μ± ν보 λ° λ°νμ μλ¬ μ κ±°
π« Stop Writing Old JavaScript β β Start Using Modern Built-in APIs (Part 2)
AI μμ½
Context
κΈ°μ‘΄ JavaScript APIμ Mutation κΈ°λ° λμμΌλ‘ μΈν μ¬μ΄λ μ΄ννΈμ μν κ΄λ¦¬μ 볡μ‘μ± μ¦λ. νΉν null-prototype κ°μ²΄μμμ λ©μλ νΈμΆ μ€ν¨ λ° λΆνμν λ°°μ΄ λ³΅μ κ³Όμ μΌλ‘ μΈν λ©λͺ¨λ¦¬ λλΉκ° λ³λͺ© μ§μ μΌλ‘ μμ©.
Technical Solution
- Object.hasOwn() λμ μ ν΅ν prototype chain μ€λ²λΌμ΄λ© λ°©μ§ λ° null-prototype κ°μ²΄μ λν μμ ν μμ± κ²μ¦ ꡬ쑰 μ€κ³
- .toSorted(), .toReversed() λ± Immutable Array Method μ±νμΌλ‘ μλ³Έ λ°μ΄ν° 보쑴 λ° React μν μ λ°μ΄νΈ λ‘μ§ μ΅μ ν
- .with() λ©μλλ₯Ό ν΅ν νΉμ μΈλ±μ€ μμ κ΅μ²΄ μ Spread operatorμ map μ°μ°μΌλ‘ μΈν λΆνμν O(n) μν μ κ±°
- .findLast() κΈ°λ°μ μλ°©ν₯ νμ ꡬνμΌλ‘ λ°°μ΄ μ 체 볡μ λ° reverse μ°μ° μμ΄ μ΅μ λ°μ΄ν° μΆμΆ ν¨μ¨ν
- crypto.randomUUID() λ΄μ₯ API νμ©μ ν΅ν μΈλΆ λΌμ΄λΈλ¬λ¦¬ μμ‘΄μ± μ κ±° λ° Cryptographically secureν ID μμ± μ²΄κ³ κ΅¬μΆ
μ€μ² ν¬μΈνΈ
- null-prototype κ°μ²΄ κ°λ₯μ±μ΄ μλ API μλ΅ κ²μ¦ μ Object.hasOwn() μ μ© μ¬λΆ νμΈ - React μν μ λ°μ΄νΈ μ Spread operator κΈ°λ°μ λ°°μ΄ λ³΅μ λμ .with() λλ .toSorted() μ¬μ© κ²ν - uuid λ± λ¨μ μ νΈλ¦¬ν° μΈλΆ ν¨ν€μ§λ₯Ό crypto.randomUUID() λ΄μ₯ APIλ‘ λ체νμ¬ Bundle Size μ΅μ ν - μ΅μ λ°μ΄ν° μΆμΆ μ [..arr].reverse().find() ν¨ν΄μ .findLast()λ‘ μ ννμ¬ λ©λͺ¨λ¦¬ ν λΉ μ΅μν