πŸ‘¨πŸ»β€πŸ’» React Deep Dive[1μž₯ 동등비ꡐ]

pjw__98Β·2023λ…„ 12μ›” 4일
1
post-thumbnail
🫨1μž₯은 λ¦¬μ•‘νŠΈ κ°œλ°œμ„ μœ„ν•΄ κΌ­ μ•Œμ•„μ•Ό ν•  μžλ°”μŠ€ν¬λ¦½νŠΈλ‹€.
1μž₯ ν•™μŠ΅ν•œ λ‚΄μš©μ„ μž‘μ„±ν•˜κΈ° μ•žμ„œ,
1μž₯만 무렀 20νŽ˜μ΄μ§€λΆ€ν„° 114νŽ˜μ΄μ§€κΉŒμ§€κ°€ 1μž₯μ΄μ˜€λ‹€.
ν›‘μ–΄λ³΄λ‹ˆ 심지어 React에 λŒ€ν•œ λ‚΄μš©μ΄ μ•„λ‹Œ JS에 λŒ€ν•œ λ‚΄μš©μ΄ λ‹€λŸ‰μ΄μ˜€λ‹€.
ν˜„μž¬ λ‚˜μ˜ 상황을 μƒκ°ν•΄λ³΄λ‹ˆ React둜 νŒ€ν”„λ‘œμ νŠΈλ₯Ό 이번주 ν† μš”μΌλΆ€ν„° 진행을
ν•˜λŠ”λ° 1μž₯은 μž μ‹œ 미루고 2μž₯λΆ€ν„° 진행을 ν•˜λ €λ‹€κ°€ 
JS에 λŒ€ν•΄ μ™„λ²½νžˆ μˆ™μ§€ν•˜κ³  μžˆμ§€λ„ μ•Šκ³  
λ‚΄μš©λŸ‰μ΄ λ§Žμ€ μ΄μœ κ°€ μžˆκ² κ±°λ‹ˆ ν•˜κ³  1μž₯λΆ€ν„° 진행을 ν•˜λ €κ³ ν•œλ‹€.

βœ… 1.1 μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ 동등 비ꡐ


λ¦¬μ•‘νŠΈμ˜ 가상 DOMκ³Ό μ‹€μ œ DOM의 비ꡐ,λ¦¬μ•‘νŠΈ μ»΄ν¬λ„ŒνŠΈκ°€ λ Œλ”λ§ν• μ§€λ₯Ό νŒλ‹¨ν•˜λŠ” 방법, λ³€μˆ˜λ‚˜ ν•¨μˆ˜μ˜ λ©”λͺ¨μ΄μ œμ΄μ…˜ λ“± λͺ¨λ“  μž‘μ—…μ€ μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ 동등 비ꡐλ₯Ό κΈ°λ°˜μœΌλ‘œν•œλ‹€.

🎯 1.1.1 μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ 데이터 νƒ€μž…

데이터 νƒ€μž… 쀑 μ›μ‹œνƒ€μž…μ—λŠ” 7κ°€μ§€μ˜ μ›μ‹œνƒ€μž…μ΄ μžˆλ‹€.
κ·Έ 쀑에 Symbol에 λŒ€ν•΄ μ•Œμ•„λ³΄μ•˜λ‹€.

  • Symbol
    Symbol은 ES6에 μƒˆλ‘­κ²Œ μΆ”κ°€λœ 7번째 νƒ€μž…μ΄λ‹€.
    μ€‘λ³΅λ˜μ§€ μ•ŠλŠ” κ³ μœ ν•œ 값을 λ‚˜νƒ€λ‚΄κΈ° μœ„ν•΄ λ§Œλ“€μ–΄μ‘Œλ‹€.
    μ‹¬λ²Œμ€ ν•¨μˆ˜λ₯Ό μ΄μš©ν•΄μ„œλ§Œ λ§Œλ“€ 수 μžˆλ‹€.
    ex : Symbol()을 μ‚¬μš©ν•΄μ•Όλ§Œ ν•œλ‹€.

     <script>
    //Symbol ν•¨μˆ˜μ— 같은 인수λ₯Ό λ„˜κ²¨μ£Όλ”λΌλ„ μ΄λŠ” λ™μΌν•œ κ°’μœΌλ‘œ μΈμ •λ˜μ§€μ•ŠμŒ.
    // μ‹¬λ²Œ ν•¨μˆ˜ 내뢀에 λ„˜κ²¨μ£ΌλŠ” 값은 Symbol 생성에 영ν–₯을 λ―ΈμΉ˜μ§€ μ•ŠμŒ. (Symbol.for μ œμ™Έ)
    const key = Symbol('key');
    const key2 = Symbol('key');
    
    key === key2 // false 
    
    //λ™μΌν•œ 값을 μ‚¬μš©ν•˜λ €λ©΄ Symbol.for을 ν™œμš©ν•œλ‹€.
    Symbol.for('Hi') === Symbol.for('Hi')// true
    </script>
  • 객체 νƒ€μž…
    객체 νƒ€μž…μ„ κ°„λ‹¨ν•˜κ²Œ μ •μ˜ν•˜λ©΄ μ›μ‹œνƒ€μž… μ™Έμ˜ λͺ¨λ“  νƒ€μž…μ΄ κ°μ²΄νƒ€μž…μ΄λΌκ³ ν•œλ‹€.
    λ°°μ—΄ ν•¨μˆ˜ μ •κ·œμ‹ 클래슀 λ“± 포함이 λœλ‹€.

    πŸ’‘ κ°μ²΄νƒ€μž…(object type)은 μ°Έμ‘°λ₯Ό μ „λ‹¬ν•œλ‹€κ³  ν•΄μ„œ μ°Έμ‘° νƒ€μž…(reference type)으둜 λΆˆλ¦°λ‹€κ³ ν•œλ‹€.

     <script>
    typeof [] === 'object'; //true
    typeof {} === 'object'; //true
    
    function hello() {}
    typeof hello === 'function' // true
    
    const hello1 = function (){}
    
    const hello2 = function (){}
    
    //객체인 ν•¨μˆ˜μ˜ λ‚΄μš©μ΄ μœ‘μ•ˆμœΌλ‘œλŠ” κ°™μ•„ 보여도 μ°Έμ‘°κ°€ λ‹€λ₯΄κΈ° λ•Œλ¬Έμ— falseκ°€ λ°˜ν™˜λœλ‹€.
    hello1 === hello2 // false
    </script>

🧐 λ‹€μŒ κΈ€μ—λŠ” 동등 λΉ„κ΅μ˜ νŠΉμ§•μ— λŒ€ν•΄ μ•Œμ•„λ³΄μž.

profile
β˜„οΈ

0개의 λŒ“κΈ€