π λͺ¨λ μλ°μ€ν¬λ¦½νΈ κ΅μ¬) 18μ₯. ν¨μμ μΌκΈ κ°μ²΄
01. μΌκΈ κ°μ²΄
λ€μ 쑰건μ λ§μ‘±νλ κ°μ²΄λ₯Ό μΌκΈ κ°μ²΄λΌ νλ©°, μλ°μ€ν¬λ¦½νΈμ ν¨μλ λͺ¨λ λ§μ‘±νμ¬ μΌκΈ κ°μ²΄λ€.
- 무λͺ μ 리ν°λ΄λ‘ μμ±ν μ μλ€. μ¦, λ°νμμ μμ±μ΄ κ°λ₯νλ€.
- λ³μλ μλ£κ΅¬μ‘°(κ°μ²΄, λ°°μ΄ λ±)μ μ μ₯ν μ μλ€.
- β ν¨μμ λ§€κ°λ³μμ μ λ¬ν μ μλ€.
- β ν¨μμ λ°νκ°μΌλ‘ μ¬μ©ν μ μλ€.
π₯οΈ μμ μ½λ
// 1. ν¨μλ 무λͺ
μ 리ν°λ΄λ‘ μμ±ν μ μλ€.
// 2. ν¨μλ λ³μμ μ μ₯ν μ μλ€.
const increase = function(num) {
return ++num;
};
// 2. ν¨μλ κ°μ²΄μ μ μ₯ν μ μλ€.
const auxs = { increase };
// 3. ν¨μλ λ§€κ°λ³μμ μ λ¬ν μ μλ€.
// 4. ν¨μλ λ°νκ°μΌλ‘ μ¬μ©ν μ μλ€.
function makeCounter(aux) {
let num = 0;
return function() {
num = aux(num);
return num;
}
}
02. ν¨μ κ°μ²΄μ νλ‘νΌν°
ν¨μλ κ°μ²΄μ΄κΈ° λλ¬Έμ, νλ‘νΌν°λ₯Ό κ°μ§ μ μλ€.
ν¨μ κ°μ²΄μ λ°μ΄ν° νλ‘νΌν°
β‘οΈ arguments, caller, length, name, prototype νλ‘νΌν°
μ κ·Όμ νλ‘νΌν°
β‘οΈ __proto__
1) arguments νλ‘νΌν°
ν¨μ κ°μ²΄μ arguments νλ‘νΌν° κ°μ arguments κ°μ²΄λ€.
μλ°μ€ν¬λ¦½νΈμ ν¨μλ λ§€κ°λ³μμ μΈμμ κ°μκ° μΌμΉνλμ§ νμΈνμ§ μλλ€.
β‘οΈ ν¨μκ° νΈμΆλλ©΄, μ묡μ μΌλ‘ λ§€κ°λ³μκ° μ μΈλκ³ undefinedλ‘ μ΄κΈ°νλ μ΄ν μΈμκ° ν λΉλλ€.
β‘οΈ λͺ¨λ μΈμλ μ묡μ μΌλ‘ arguments κ°μ²΄μ νλ‘νΌν°λ‘ 보κ΄λλ€. (λ§€κ°λ³μμ κ°μ > μΈμ μΈ κ²½μ°, μ΄κ³Όλ μΈμλ λ²λ €μ§λ κ²μ΄ μλλ€.)
β argument κ°μ²΄λ λ§€κ°λ³μ κ°μλ₯Ό νμ ν μ μλ κ°λ³ μΈμ ν¨μλ₯Ό ꡬνν λ μ μ©νλ€.
β οΈ arguments κ°μ²΄λ λ°°μ΄ ννλ‘ μΈμ μ 보λ₯Ό λ΄κ³ μλ€.
β οΈ νμ§λ§, μ μ¬ λ°°μ΄ κ°μ²΄λ‘, λ°°μ΄ λ©μλλ₯Ό μ¬μ©ν κ²½μ° μλ¬κ° λ°μνλ€.
2) length νλ‘νΌν°
ν¨μ κ°μ²΄μ length νλ‘νΌν°λ ν¨μλ₯Ό μ μν λ μ μΈν λ§€κ°λ³μμ κ°μλ₯Ό κ°λ¦¬μΉλ€.
β οΈ arguments κ°μ²΄μ length νλ‘νΌν° : μΈμμ κ°μ
β οΈ ν¨μ κ°μ²΄μ length νλ‘νΌν° : λ§€κ°λ³μμ κ°μ
3) name νλ‘νΌν°
ν¨μ κ°μ²΄μ name νλ‘νΌν°λ ν¨μ μ΄λ¦μ λνλΈλ€.
β οΈ ES5 : λΉ λ¬Έμμ΄μ κ°μΌλ‘ κ°λλ€.
β οΈ ES6 : ν¨μ κ°μ²΄λ₯Ό κ°λ¦¬ν€λ μλ³μλ₯Ό κ°μΌλ‘ κ°λλ€.
β 리λ§μΈλ β
ν¨μ μ΄λ¦κ³Ό ν¨μ κ°μ²΄λ₯Ό κ°λ¦¬ν€λ μλ³μλ μλ―Έκ° λ€λ₯΄λ€!
β‘οΈ ν¨μλ₯Ό νΈμΆν λλ ν¨μ κ°μ²΄λ₯Ό κ°λ¦¬ν€λ μλ³μ(ν¨μ μ΄λ¦ X)λ‘ νΈμΆνλ€.
4) __ proto__ μ κ·Όμ νλ‘νΌν°
λͺ¨λ κ°μ²΄λ [[Prototype]]μ΄λΌλ λ΄λΆ μ¬λ‘―μ κ°λλ€.
β‘οΈ [[Prototype]] λ΄λΆ μ¬λ‘―μ κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°μ μμμ ꡬννλ νλ‘ν νμ κ°μ²΄λ₯Ό κ°λ¦¬ν¨λ€.
__proto__ νλ‘νΌν°λ [[Protytype]] λ΄λΆ μ¬λ‘―μ΄ κ°λ¦¬ν€λ νλ‘ν νμ κ°μ²΄μ μ κ·ΌνκΈ° μν΄ μ¬μ©νλ μ κ·Όμ νλ‘νΌν°λ€.
β‘οΈ λ΄λΆ μ¬λ‘―μλ μ§μ μ κ·Όν μ μκ³ , κ°μ μ μΈ μ κ·Ό λ°©λ²μ μ 곡νλ κ²½μ°μ ννμ¬ μ κ·Ό κ°λ₯νλ€.
β‘οΈ [[Prototype]] λ΄λΆ μ¬λ‘―λ μ§μ μ κ·Όν μ μμΌλ©°, __proto__ μ κ·Όμ νλ‘νΌν°λ₯Ό ν΅ν΄ κ°μ μ μΌλ‘ μ κ·Ό κ°λ₯νλ€.
5) prototype νλ‘νΌν°
prototype νλ‘νΌν°λ μμ±μ ν¨μλ‘ νΈμΆν μ μλ ν¨μ κ°μ²΄, μ¦ constructorλ§μ΄ μμ νλ νλ‘νΌν°λ€.
β‘οΈ prototype νλ‘νΌν°λ ν¨μκ° κ°μ²΄λ₯Ό μμ±νλ μμ±μ ν¨μλ‘ νΈμΆλ λ μμ±μ ν¨μκ° μμ±ν μΈμ€ν΄μ€μ νλ‘ν νμ κ°μ²΄λ₯Ό κ°λ¦¬ν¨λ€.
π μ°Έκ³ μλ£