πŸ“™ ν”„λ‘œν† νƒ€μž…κ³Ό λ°°μ—΄

Young Hwan KimΒ·2020λ…„ 11μ›” 20일
0

κ°μ²΄λž€?

ν”„λ‘œν† νƒ€μž…(Prototype)

μžλ°”μŠ€ν¬λ¦½νŠΈ λͺ¨λ“  κ°μ²΄λŠ” μžμ‹ μ˜ λΆ€λͺ¨ 역할을 ν•˜λŠ” 객체와 μ—°κ²°λ˜μ–΄ μžˆλ‹€.
μ΄λŸ¬ν•œ λΆ€λͺ¨ 객체λ₯Ό ν”„λ‘œν† νƒ€μž… 객체(μ§§κ²ŒλŠ” ν”„λ‘œν† νƒ€μž…)이라고 λΆ€λ₯Έλ‹€.

    let foo = {
        name : 'foo',
        nickname : 'babo'
    };

    foo.toString();
    console.log(foo.toString());
    console.dir(foo);

크둬 λΈŒλΌμš°μ €μ—μ„œλŠ” __proto__κ°€ λ°”λ‘œ 이 μˆ¨κ²¨μ§„ [[Prototype]] ν”„λ‘œνΌν‹°λ₯Ό μ˜λ―Έν•œλ‹€. 즉, foo κ°μ²΄λŠ” μžμ‹ μ˜ λΆ€λͺ¨ 객체λ₯Ό __proto__λΌλŠ” λ‚΄λΆ€ ν”„λ‘œνΌν‹°λ‘œ μ—°κ²°ν•˜κ³  μžˆλŠ” 것이닀.

κ·Έλž˜μ„œ μœ„μ˜ 결과와 같이 ν”„λ‘œν† νƒ€μž…(proto = Object.prototype)의 toString(),valueOf() λ“± λ‚΄μž₯ λ©”μ„œλ“œλ₯Ό λͺ¨λ‘ 호좜 ν•  수 μžˆλ‹€.

λ°°μ—΄

객체 λ¦¬ν„°λŸ΄μ΄ μ€‘κ΄„ν˜Έ{ }λ₯Ό μ‚¬μš©ν•˜λ©΄ λ°°μ—΄ λ¦¬ν„°λŸ΄μ€ λŒ€κ΄„ν˜Έ[ ] λ₯Ό μ‚¬μš©ν•œλ‹€

    //λ°°μ—΄ λ¦¬ν„°λŸ΄
    var arr = ['zero','one','two'];

    console.log(arr);
    console.dir(arr);

    var emptyArr = [];
    console.log(emptyArr[0]);
    emptyArr[0] = 100;

    var ttArr = ['zoo', 'aa', 'bb'];

    ttArr.push('cc');
    console.log(ttArr); // ["zoo", "aa", "bb", "cc"]

    console.log(ttArr.pop()); // 맨뒀 값을 λ°˜ν™˜ 
    console.log(ttArr); // ["zoo", "aa", "bb"]

    delete ttArr[2];
    console.log(ttArr); // ["zoo", "aa", empty]
    console.log(typeof ttArr[2]); // undefined

delete ttArr[2]둜 배열을 μ‚­μ œν•˜λ©΄ ν•΄λ‹Ή μš”μ†Œμ˜ 값을 undefined둜 μ„€μ •ν•  뿐 μ›μ†Œ 자체λ₯Ό μ‚­μ œν•˜μ§€ μ•ŠλŠ”λ‹€.

객체와 λ°°μ—΄μ˜ 차이점

μ„ μ–Έλœ 객체와 λ°°μ—΄μ˜ 속성을 듀여닀보면 κ°μ²΄λŠ” Object.prototype 객체가 ν”„λ‘œν† νƒ€μž…μ΄κ³  배열은 Array.prototype 객체가 ν”„λ‘œν† νƒ€μž…μ΄λ‹€. κ·Έλž˜μ„œ 배열을 μ‚¬μš©ν•  λ•ŒλŠ” push(), pop() 같은 ν‘œμ€€λ©”μ„œλ“œκ°€ ν¬ν•¨λ˜μ–΄ μžˆμ–΄μ„œ μ‚¬μš©ν•  수 μžˆλ‹€.

profile
Back-End DEVELOPER ☁️

0개의 λŒ“κΈ€