์žฌ๋ฐŒ๊ฒŒ ํ•ฉ์‹œ๋‹ค

๊ธฐ๋กํ•˜๊ธฐ, ๊ฐ€์‹œํ™”ํ•˜๊ธฐ

Vanilla JS

this ํ‚ค์›Œ๋“œ

์€๋˜๋”” 2022. 8. 19. 20:15
function App() {
  this.contents = [];
}

App();

App ํ•จ์ˆ˜๋ฅผ ์„ ์–ธํ•˜๊ณ  this.contents๋กœ contents๋ผ๋Š” ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌ ํ•˜๊ณ ์ž ํ–ˆ๋Š”๋ฐ, ์•„๋ž˜์™€ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

thisํ‚ค์›Œ๋“œ๋ฅผ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ด ๋ฐœ์ƒํ•œ ์—๋Ÿฌ์˜€๋‹ค.

 

this ํ‚ค์›Œ๋“œ์˜ ์˜๋ฏธ

this๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ž์‹ ์ด ์†ํ•ด ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ์ง€์นญํ•œ๋‹ค.

const person = {
	sayHi() {
    	console.log(this); // person ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฅดํ‚จ๋‹ค.
    }
}

๋”ฐ๋ผ์„œ ์ „์—ญํ•จ์ˆ˜์—์„œ์˜ this๋Š” window ๊ฐ์ฒด๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์ „์—ญ scope์—์„œ ํ•จ์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋ฉด window ๊ฐ์ฒด์— ์ถ”๊ฐ€๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

๋‹ค๋งŒ strict mode์ผ ๋•Œ ์ „์—ญํ•จ์ˆ˜์—์„œ this๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด undefined๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค. ์œ„ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ์ด์œ ๋„ ์ด์™€ ๊ด€๋ จ์ด ์žˆ๋‹ค. index.js์—์„œ Appํ•จ์ˆ˜๋ฅผ ๋ฐ”๋กœ ์„ ์–ธํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— App์€ ์ „์—ญํ•จ์ˆ˜๊ฐ€ ๋œ๋‹ค. ๋”ฐ๋ผ์„œ this๊ฐ€ undefined๋ฅผ ๊ฐ€๋ฅด์ผœ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

๋”ฐ๋ผ์„œ Appํ•จ์ˆ˜๋ฅผ ์„ ์–ธํ•œ ๋‹ค์Œ ์ด๋ฅผ ์‚ฌ์šฉํ•ด ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์ค€๋‹ค. ๊ทธ๋Ÿฌ๋ฉด this๊ฐ€ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฅดํ‚ค๊ฒŒ ๋˜์–ด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.

function App() {
	this.contents = [];
}

const app = new App();