πŸͺ΄ μ„±μž₯일지

μ±… ν–‰λ³΅ν•œ 이기주의자(웨인 닀이어)의 λ‚΄μš©μ— μžκ·Ήλ°›μ•„ μ‹œμž‘ν•˜λŠ” μ†Œλ°•ν•œ μ„±μž₯기둝

μ‚΄μ•„μžˆλŠ” 꽃과 죽은 꽃은 μ–΄λ–»κ²Œ κ΅¬λ³„ν•˜λŠ”κ°€?
μ„±μž₯ν•˜κ³  μžˆλŠ” 것이 μ‚΄μ•„ μžˆλŠ” 것이닀.
생λͺ…μ˜ μœ μΌν•œ μ¦κ±°λŠ” μ„±μž₯이닀!

🌳 ν‚€μ›Œλ“œ

μ΅œλŒ€ν•œ κ°„λ‹¨ν•˜κ²Œ 정리, 좔후에 λ³΄λ©΄μ„œ 슀슀둜 μ„€λͺ…

⭐⭐⭐ JavaScript this

thisλŠ” 기본적으둜 μ‹€ν–‰ μ»¨ν…μŠ€νŠΈκ°€ 생성될 λ•Œ ν•¨κ»˜ κ²°μ •(ThisBinding)
μ‹€ν–‰ μ»¨ν…μŠ€νŠΈκ°€ μƒμ„±λ˜λŠ” 건 μ–Έμ œ? -> ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•  λ•Œ
즉, this도 ν•¨μˆ˜λ₯Ό 호좜 μ‹œ 결정됨

μ „μ—­κ³΅κ°„μ—μ„œμ˜ this -> window(전역객체)

var a = 1; // window.a = 1의 κΈ°λŠ₯을 μˆ˜ν–‰ν•˜λ©΄μ„œ λ™μ‹œμ— 차이점도 쑴재 1. ν˜Έμ΄μŠ€νŒ… 유무, 2. configurable μ—¬λΆ€
window.a = 1;
  1. ν•¨μˆ˜λ‘œ 호좜 μ‹œ this : μ „μ—­ 객체(window)λ₯Ό 가리킴
  2. λ©”μ†Œλ“œλ‘œ 호좜 μ‹œ this : 객체.λ©”μ†Œλ“œμ—μ„œ 객체λ₯Ό 가리킴
  3. ⭐ λ©”μ†Œλ“œ λ‚΄μ—μ„œμ˜ ν•¨μˆ˜ 호좜 μ‹œ
var obj = {
  method: function () {
    console.log(this); // 1. this -> obj
    // λ©”μ†Œλ“œ λ‚΄λΆ€μ˜ ν•¨μˆ˜λ₯Ό 호좜 μ‹œ
    var inner = function () {
      console.log(this); // 2. this -> window : λ©”μ†Œλ“œ 내뢀여도 κ²°κ΅­ `ν•¨μˆ˜ 호좜`이기 λ•Œλ¬Έ
    }
    inner();
    function inner2 = () => {
      console.log(this);
      // 3. this -> obj : μœ„μ˜ 2λ²ˆμ€ λͺ…λ°±ν•œ 섀계상 였λ₯˜μž„.
      // 이λ₯Ό ν•΄κ²°ν•˜κ³ μž ν™”μ‚΄ν‘œ ν•¨μˆ˜λ₯Ό λ„μž…(μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ ν™œμ„±ν™” μ‹œ Thisbinding이 μΌμ–΄λ‚˜μ§€μ•ŠμŒ)
      // λ”°λΌμ„œ μŠ€μ½”ν”„μ²΄μ΄λ‹μ²˜λŸΌ μžμ—°μŠ€λŸ½κ²Œ 내뢀에 thisκ°€ μ—†λ‹€λ©΄ κ·Έ μƒμœ„ μ»¨ν…μŠ€νŠΈμ—μ„œμ˜ thisλ₯Ό μ°Έμ‘°
    }
  }
}

μ½œλ°±ν•¨μˆ˜μ—μ„œμ˜ this : μ½œλ°±ν•¨μˆ˜μ˜ μ œμ–΄κΆŒμ„ κ°€μ§€λŠ” ν•¨μˆ˜ 마음(κ·Έ ν•¨μˆ˜μ— 따라 제각각)

μƒμ„±μž ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œμ˜ this : μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” ν•¨μˆ˜μ—κ²Œ μƒμ„±μžλ‘œμ„œμ˜ 역할을 ν•¨κ»˜ λΆ€μ—¬ν–ˆλ‹€. -> λͺ…심할 것!

var Dog = function (name, age) {
  this.name = name;
  this.age = age;
};

var hodu = new Dog('hodu', 2); // thisκ°€ hodu μΈμŠ€ν„΄μŠ€λ₯Ό 가리킴

λͺ…μ‹œμ μœΌλ‘œ thisλ₯Ό λ°”μΈλ”©ν•˜λŠ” 방법(고의둜 thisλ₯Ό λ°”μΈλ”©ν•˜κΈ°)

  1. call λ©”μ„œλ“œ

  2. apply λ©”μ„œλ“œ

이듀을 ν™œμš©ν•˜λŠ” 방법을 더 기얡해두기!

μ›Œβ€¦ thisλΌλŠ” 게 μ΄λ ‡κ²Œ λ³΅μž‘ν•œμ§€ λͺ°λžλŠ”데, μ‹€ν–‰ μ»¨ν…μŠ€νŠΈλΆ€ν„° ν•˜λ‚˜ν•˜λ‚˜ ꡬ체적으둜 μ ‘κ·Όν•˜λ‹ˆκΉŒ 생각보닀 재미있고 어렡지 μ•Šλ‹€.