this

this๋Š” ํ˜„์žฌ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฅดํ‚ค๋Š” ํ‚ค์›Œ๋“œ

ํŠน์ง•

  • ๋ชจ๋“  ํ•จ์ˆ˜์— this๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐ์ฒด๊ฐ€ ์—†์–ด๋„ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.

    function sayHi() {
      alert(this);
    }
    sayHi(); //undefined

    ์—„๊ฒฉ๋ชจ๋“œ์ผ๋•Œ๋Š” undefined๋ฅผ ํ• ๋‹นํ•˜๊ณ , ์—„๊ฒฉ๋ชจ๋“œ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ์ „์—ญ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•œ๋‹ค. (๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์—์„  window๋ผ๋Š” ์ „์—ญ ๊ฐ์ฒด)

  • this๋Š” ๋Ÿฐํƒ€์ž„์— ๊ฒฐ์ •๋œ๋‹ค.

    let user = { name: 'John' };
    let admin = { name: 'Admin' };
    
    function sayHi() {
      alert(this.name);
    }
    
    user.f = sayHi;
    admin.f = sayHi;
    
    user.f(); //John (this == user)
    admin.f(); //Admin(this == admin)
    
    admin['f'](); //John (this == user)
    user['f'](); //Admin(this == admin)
    • ์œ„์™€ ๊ฐ™์ด ํ•˜๋‚˜์˜ ํ•จ์ˆ˜๋กœ ์—ฌ๋Ÿฌ ๊ฐ์ฒด์—์„œ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

    • this๊ฐ€ ๋ฌด์—‡์„ ๊ฐ€๋ฆฌํ‚ค๋Š”์ง€ ํ—ท๊ฐˆ๋ ค ์‹ค์ˆ˜ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

  • ํ™”์‚ดํ‘œ ํ•จ์ˆ˜์—๋Š” this๊ฐ€ ์—†๋‹ค ํ™”์‚ดํ‘œ ํ•จ์ˆ˜์—์„œ this๋ฅผ ์ฐธ์กฐํ•˜๋ฉด ํ‰๋ฒ”ํ•œ ์™ธ๋ถ€ ํ•จ์ˆ˜์—์„œ this๊ฐ’์„ ๊ฐ€์ ธ์˜จ๋‹ค.

    ```js
    let user = {
        firstName: "๋ณด๋ผ",
        sayHi() {
            let arrow = () => alert(this.firstName);
            arrow();
        }
    };
    user.sayHi(); // ๋ณด๋ผ
    ```
    ```js
    let user = {
        firstName: "๋ณด๋ผ",
        sayHi : () => alert(this.firstName);
    };
    user.sayHi(); // undefined
    ```

Last updated