๐Ÿ“Œโ€œTHISโ€๋Š” ํ•จ์ˆ˜๋ฅผ โ€œํ˜ธ์ถœโ€ํ•œ ๊ฐ์ฒด์ด๋‹ค.

function main(){
	console.log(this);
}
main() // window

๐Ÿšฉ window๋ผ๋Š” ๊ฐ์ฒด ์•ˆ์„ ๋ณด๋ฉด main์ด๋ผ๋Š” ํ•จ์ˆ˜๊ฐ€ ๋“ค์–ด์žˆ๋‹ค.

๐Ÿšฉ ์ „์—ญ์ ์œผ๋กœ ์‹คํ–‰๋œ ํ•จ์ˆ˜๋Š” window.main()๊ณผ ๊ฐ™๊ธฐ ๋•Œ๋ฌธ์—

this๊ฐ€ ์†ํ•ด์žˆ๋Š” ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ ๊ฐ์ฒด๋ฅผ window๋กœ ๋ณธ๋‹ค.

๐Ÿ’ฅ ๊ทธ๋Ÿฌ๋‚˜

**โ€œuse strictโ€**๋ชจ๋“œ๋กœ JS๋ฅผ ์‹คํ–‰ํ•œ๋‹ค๋ฉด, โ€œundefinedโ€๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.

ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ **โ€œuse strictโ€**๋ชจ๋“œ๋กœ ์‹คํ–‰ํ•ด๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋‹ค.

ํ•จ์ˆ˜ ์Šค์ฝ”ํ”„ ์•ˆ์—์„œ this๊ฐ€ ์ •์˜๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

โœ ๋ฉ”์†Œ๋“œ ์•ˆ์˜ this

const object = {
	name: "TOM",
	main: function(){
		console.log(this)
	},
};
object.main(); // { name: "TOM", main:  ฦ’}

๊ฐ์ฒด ์•ˆ์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ์ƒ์„ฑํ•œ ํ›„,

๋ฉ”์†Œ๋“œ์—์„œ this๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์‹คํ–‰์‹œํ‚ค๋ฉด

๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ์ฒด๊ฐ€ this๊ฐ€ ๋œ๋‹ค.

๐Ÿšฉํ•จ์ˆ˜์˜ ์œ„์น˜๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š๋‹ค!

function main(){
	console.log(this)
}

const object = {
	name: "TOM"
	main,
};
object.main() // { name: "TOM", main:  ฦ’}

โ†’ ํ•จ์ˆ˜๊ฐ€ ์–ด๋””์—์„œ ์ƒ์„ฑ๋๋Š”์ง€ ์œ„์น˜๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š๋‹ค.

๊ทธ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ ๊ฐ์ฒด๊ฐ€ this๊ฐ€ ๋จ

๐Ÿšฉํ•จ์ˆ˜์™€ ๊ฐ€์žฅ ๊ฐ€๊น๊ฒŒ ํ˜ธ์ถœํ•œ ๊ฐ์ฒด

function main(){
	console.log(this)
}

const object = {
	name: "TOM",
	smallObject: {
		name: "TOM JR",
		main,
};
object.<u>**smallObject**</u>.main() //{name: 'TOM JR', main: ฦ’}

โ†’ ๊ฐ์ฒด๋ฅผ ํ˜ธ์ถœํ•œ ํ•จ์ˆ˜์™€ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ฐ์ฒด๊ฐ€ this๊ฐ€ ๋œ๋‹ค.