๐ this์ ๋ฐ์ธ๋ฉ
1. . call( )
- .call() ์ ์ฆ์์คํํจ์ ์ด๋ฉด์, this์ ๊ฐ์ ๋ฐ์ธ๋ฉ ํ ์ ์๋ ์ ๋ค.
- .call(this๊ฐ ์ฐธ์กฐ ํ ๋์, ํด๋น ํจ์์ ๋ฃ์ ํ๋ผ๋ฏธํฐ ๊ฐ)
ํธ์ถ ์ฃผ์ฒด๊ฐ ์๋ ๊ฒฝ์ฐ.
var func = function (a, b, c) {
console.log(this, a, b, c); //{ x: 1 } 1 2 3
};
func.call({ x: 1 }, 1, 2, 3);
ํธ์ถ ์ฃผ์ฒด๊ฐ ์๋ ๊ฒฝ์ฐ
var obje = {
gogo: function (a) {
console.log(this, a);
},
};
//this์ ๋ฐ์ธ๋ฉ ํ์ง ์๋ ๊ฒฝ์ฐ
obje.gogo(2); //obj๋ด๋ถ์ ์๋ ์ ๋ค ์ ์ฒด ํธ์ถ { gogo: [Function: gogo], toto: [Function: toto] } 2
//this ๋ฐ์ธ๋ฉ ํ ๊ฒฝ์ฐ
obje.gogo.call({ toto: 3 }, 2); //{ toto: 3 } 2
2. . apply( )
- ๋งค๊ฐ๋ณ์ ์๋ฆฌ์ ๋ฃ์ ๊ฐ๋ค์ ๋๊ดํธ๋ก ๋ฌถ์ด์ค์ผ๋ง ํ๋ค.
- .call() ๊ณผ ๋น์ทํ๋ค.
let obj4 = {
a: 3,
method: function (b, c) {
console.log(this.a, b, c);
},
};
obj4.method(7, 9); //3 7 9
obj4.method.apply({ a: 99 }, [7, 9]); //99 7 9
3. . bind ( )
- ์ฆ์์คํํ๋ .call( ), .apply( ) ์๋ ๋ฌ๋ฆฌ ํจ์์ this๋ฅผ ๋ฏธ๋ฆฌ ์ ์ฉํ๊ณ , ์ดํ์ ์คํํ๋ค.
- ์ฆ์ ์คํ์ด ์๋๊ธฐ ๋๋ฌธ์ ํจ์ฌ ๋ ๋ง์ด ์ฌ์ฉํ๋ค.
- ๋ถ๋ถ ์ ์ฉ ํจ์
- ๋ฐ์ธ๋ ๋ ์ ๋ค์ ์ถ์ฒํ๊ธฐ ์ข์ name ์์ฑ์ด ์๋ค.
let gu = function (a, b, c, d) {
console.log(this, a, b, c, d);
};
//ํจ์์ this๋ฅผ ๋ฏธ๋ฆฌ ์ ์ฉ
let guBind = gu.bind({ e: "์ ์ " });
guBind("์ผ", "์ด", "์ผ", "์ฌ"); //{ e: '์ ์ ' } ์ผ ์ด ์ผ ์ฌ
//๋ถ๋ถ ์ ์ฉ ํจ์
let guBind2 = gu.bind({ e: "์ ์ " }, 8, 0);
guBind2("์ผ", "์ฌ"); //{ e: '์ ์ ' } 8 0 ์ผ ์ฌ
//๋ฐ์ธ๋ ๋ ์ ๋์ ์ถ์ ํ๊ธฐ ์ข์ name ์์ฑ์ด ์๋ค.
console.log(gu.name); //gu
console.log(guBind.name); //bound gu
console.log(guBind2.name); //bound gu
'TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
23/10/17 TIL __ ๋งํฌ๋ ๋ฆฌ์คํธ (0) | 2023.10.17 |
---|---|
23/10/16 TIL __ ๋น๋๊ธฐ์ ์ฒ๋ฆฌ (promise, generator, async/await) (2) | 2023.10.16 |
23/10/14 TIL __ this ์ ๋ฐ์ธ๋ฉ (0) | 2023.10.14 |
23/10/13 TIL _ ๋จ์ถ์์ฑ๋ช (property shorthand) (2) | 2023.10.13 |
23/10/12 TIL _ switch / break / continue (0) | 2023.10.12 |