πΈ14μ₯. μ μ λ³μμ λ¬Έμ μ
β
14.1 λ³μμ μλͺ
μ£ΌκΈ°
λ³μλ νλμ κ°μ μ μ₯νκΈ° μν΄ ν보ν λ©λͺ¨λ¦¬ κ³΅κ° μ체/κ·Έ λ©λͺ¨λ¦¬ 곡κ°μ μλ³νκΈ° μν΄ λΆμΈ μ΄λ¦
λ³μμ μλͺ μ£ΌκΈ°λ
λ©λͺ¨λ¦¬ 곡κ°μ΄ ν보(allocate)
λ μμ λΆν°λ©λͺ¨λ¦¬ 곡κ°μ΄ ν΄μ (release)
λμ΄κ°μ© λ©λͺ¨λ¦¬ ν(memory pool)μ λ°ν
λλ μμ κΉμ§
μ§μ λ³μμ μλͺ
μ£ΌκΈ°
ν¨μκ° νΈμΆλλ©΄ μμ±λκ³ ν¨μκ° μ’ λ£νλ©΄ μλ©Ένλ€.
μ§μλ³μ νΈμ΄μ€ν μ€μ½ν
ν¨μ λ΄λΆμμ μ μΈν λ³μλ ν¨μκ° νΈμΆλ μ§νμ ν¨μ λͺΈμ²΄μ μ½λκ° ν μ€μ© μμ°¨μ μΌλ‘ μ€νλκΈ° μ΄μ μ μλ°μ€ν¬λ¦½νΈ μμ§μ μν΄ λ¨Όμ μ€νλλ€.
μ§μλ³μμ μ μΈμ΄ μ§μ μ€μ½νμ μ λλ‘ λμ΄ μ¬λ €μ§ κ²μ²λΌ λμνλ κ²
λ°λΌμ, μ§μλ³μλ ν¨μ μ 체μμ μ ν¨νλ€.
μ°Έκ³ ) νΈμ΄μ€ν μ μ€μ½νλ₯Ό λ¨μλ‘ λμνλ€.
μ μ λ³μμ μλͺ
μ£ΌκΈ°
μ μ λ³μλ λͺ μμ μΈ νΈμΆ μμ΄ μ€νλλ€.
μ μ μ½λλ νΉλ³ν μ§μ μ μ΄ μκ³ μ½λκ° λ‘λλμλ§μ κ³§λ°λ‘ ν΄μλκ³ μ€νλλ€.
μ μ μ½λλ λ°νλ¬Έμ μ¬μ©ν μ μμΌλ―λ‘ λ§μ§λ§ λ¬Έμ΄ μ€νλμ΄ λμ΄μ μ€νν λ¬Έμ΄ μμ λ μ’ λ£νλ€.
var
ν€μλλ‘ μ μΈν μ μ λ³μλμ μ κ°μ²΄μ νλ‘νΌν°
κ° λλ€.
μ μ κ°μ²΄(global object)
μ½λκ° μ€νλκΈ°(λ°νμ) μ΄μ μ μλ°μ€ν¬λ¦½νΈ μμ§μ μν΄ μ΄λ€ κ°μ²΄λ³΄λ€λ λ¨Όμ μμ±λλ νΉμν κ°μ²΄
λΈλΌμ°μ μμλ
window
, Node.jsμμλglobal κ°μ²΄
λ₯Ό μλ―ΈES11λΆν°
globalThis
λ‘ μ μ κ°μ²΄λ₯Ό κ°λ¦¬ν€λ μλ³μ ν΅μΌνμ€ λΉνΈμΈ κ°μ²΄
(Object, String, Number, Function, Array ...)μ νκ²½μ λ°λ₯ΈνΈμ€νΈ κ°μ²΄
(λΈλΌμ°μ μ Web API λλ Node.jsμ νΈμ€νΈ API), var ν€μλλ‘ μ μΈνμ μ λ³μμ μ μ ν¨μ
λ₯Ό νλ‘νΌν°λ‘ κ°μ§λ€.
β
14.2 μ μ λ³μμ λ¬Έμ μ
1. μ묡μ κ²°ν©(implicit coupling)
μ묡μ κ²°ν©μ νμ©νλ€λ κ² == λͺ¨λ μ½λκ° μ μ λ³μλ₯Ό μ°Έμ‘°νκ³ λ³κ²½ν μ μλ κ²
λ³μμ μ ν¨ λ²μκ° ν¬λ©΄ ν΄μλ‘ μ½λμ κ°λ μ±μ λλΉ μ§κ³ μλμΉ μκ² μνκ° λ³κ²½λ μ μλ μνμ±μ΄ λμμ§λ€.
2. κΈ΄ μλͺ
μ£ΌκΈ°
μ μλ³μλ μλͺ μ£ΌκΈ°κ° κΈΈλ€.
λ³μ μ΄λ¦μ΄ μ€λ³΅λ μ μκ³ μ€λ³΅λλ©΄ μλμΉ μμ μ¬ν λΉμ΄ μ΄λ€μ§λ€.
λ°λΌμ, μν λ³κ²½μ μν μ€λ₯κ° λ°μν νλ₯ μ΄ λκ³ λ©λͺ¨λ¦¬ 리μμ€λ κΈ΄ μκ° μλΉνλ€.
3. μ€μ½ν μ²΄μΈ μμμ μ’
μ μ μ‘΄μ¬
μ μ λ³μλ μ€μ½ν μ²΄μΈ μμμ μ’ μ μ μ‘΄μ¬νκΈ° λλ¬Έμ β λ³μλ₯Ό κ²μν λ μ μ λ³μκ° κ°μ₯ λ§μ§λ§μ κ²μλλ€.
μ μ λ³μμ κ²μ μλκ° λ리λ€.
4. λ€μμ€νμ΄μ€ μ€μΌ
μλ°μ€ν¬λ¦½νΈλ νμΌμ΄ λΆλ¦¬λμ΄μλ€ ν΄λ νλμ μ μ μ€μ½νλ₯Ό 곡μ νλ€.
λ°λΌμ, λ€λ₯Έ νμΌ λ΄μμ λμΌν μ΄λ¦μΌλ‘ λͺ λͺ λ μ μ λ³μλ μ μ ν¨μκ° κ°μ μ€μ½ν λ΄μ μ‘΄μ¬ν κ²½μ° μμμΉ λͺ»ν κ²°κ³Όλ₯Ό μ΄λν μ μλ€.
β
14.3 μ μ λ³μμ μ¬μ©μ μ΅μ νλ λ°©λ²
λ³μμ μ€μ½νλ μ’μμλ‘ μ’λ€.
1. μ¦μ μ€ν ν¨μ μ¬μ©
λͺ¨λ μ½λλ₯Ό μ¦μ μ€νν¨μλ‘ κ°μΈλ©΄ λͺ¨λ λ³μλ μ¦μ μ€νν¨μμ μ§μ λ³μκ° λλ€.
2. λ€μμ€νμ΄μ€ κ°μ²΄
μ μμ λ€μμ€νμ΄μ€(namespace) μν μ λ΄λΉν κ°μ²΄λ₯Ό μμ±νκ³ μ μ λ³μμ²λΌ μ¬μ©νκ³ μΆμ λ³μλ₯Ό νλ‘νΌν°λ‘ μΆκ°νλ€.
λ€μμ€νμ΄μ€ κ°μ²΄μ λ λ€λ₯Έ λ€μ μ€νμ΄μ€ κ°μ²΄λ₯Ό νλ‘νΌν°λ‘ μΆκ°ν μ μλ€. (κ³μΈ΅μ λ€μμ€νμ΄μ€)
λ€μμ€νμ΄μ€ κ°μ²΄ μμ²΄κ° μ μ λ³μμ ν λΉλλ―λ‘ κ·Έλ€μ§ μ μ©νμ§ μλλ€.
3. λͺ¨λ ν¨ν΄ μ¬μ©
ν΄λμ€λ₯Ό λͺ¨λ°©ν΄μ κ΄λ ¨μ΄ μλ λ³μμ ν¨μλ₯Ό μ¦μ μ€ν ν¨μλ‘ κ°μΈ νλμ λͺ¨λμ λ§λ λ€.
ν΄λ‘μ (closure)λ₯Ό κΈ°λ°μΌλ‘ λμνλ€. - μ΄ν λ€λ£° λ΄μ©
μ μ λ³μμ μ΅μ λ λ¬Όλ‘ μΊ‘μν(encapsulation) κΉμ§ ꡬνν μ μλ€ β μ 보 μλ κ°λ₯
4. ES6 λͺ¨λ
ES6 λͺ¨λμ νμΌ μ체μ λ μμ μΈ λͺ¨λ μ€μ½νλ₯Ό μ 곡νλ€.
λͺ¨λ λ΄μμ var ν€μλλ‘ μ μΈν λ³μλ μ μ λ³μλ window κ°μ²΄μ νλ‘νΌν°κ° μλλ€.
Last updated