(๋ค๋ก ๊ฐ ์๋ก ์ฐ์ ์์๊ฐ ๋์)
- ๊ธฐ๋ณธ ๋ฐ์ธ๋ฉ
- ๊ธฐ๋ณธ์ ์ผ๋ก ์ ์ญ ๊ฐ์ฒด์ ์ปจํ ์คํธ๊ฐ ๋ฐ์ธ๋ฉ๋๋ค.
- ํ์ง๋ง strict๋ชจ๋์์๋
undefined
์ด๋ค.
- ์์์ ๋ฐ์ธ๋ฉ
- ํจ์ ํธ์ถ ์ ๊ฐ์ฒด์ ํ๋กํผํฐ์ ์ ๊ทผํ์ฌ ์คํ(
obj.method()
) - ํธ์ถ๋ถ์ ๊ฐํ ํ๋กํผํฐ๋ก ์ ๊ทผํ๋ฉด, ์ด ๊ฐ์ฒด๋ฅผ this์ ๋ฐ์ธ๋ฉ
- ํจ์ ํธ์ถ ์ ๊ฐ์ฒด์ ํ๋กํผํฐ์ ์ ๊ทผํ์ฌ ์คํ(
- ๋ช
์์ ๋ฐ์ธ๋ฉ
- call, apply, bind ์ฌ์ฉ
- bind(null)์ ์ฌ์ฉํ๋ฉด ์ปค๋ง ๊ฐ๋ฅ
new
๋ฐ์ธ๋ฉ- new๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ก์ด ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋๋ฐ, ์ด๋ ๋ฐํ๋๋ ๊ฐ์ด
this
- new๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ก์ด ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋๋ฐ, ์ด๋ ๋ฐํ๋๋ ๊ฐ์ด
- ํ์ดํํจ์์ this๋ ์์ ์ค์ฝํ๊ฐ ๊ฐ๋ฆฌํค๋ this์ ๊ฐ์
- JS๋ ๋ ์์ปฌ ์ค์ฝํ๋ฅผ ๋ฐ๋ฅด๋ฏ๋ก ํจ์๋ฅผ ์ ์ธํ ์์ ์ ์์ ์ค์ฝํ๊ฐ ๊ฒฐ์ ๋จ
- ๊ธฐ๋ณธ ๋ฐ์ธ๋ฉ์ ์ฃผ์ฒด๊ฐ ์ ์ญ๊ฐ์ฒด(window or global)๊ฐ ์๋
undefined
- class๋ฌธ๋ฒ ๋ด๋ถ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์๊ฒฉ๋ชจ๋๊ฐ ์ ์ฉ๋จ
const Test = class {
func() {
console.log(this);
}
};
const A = new Test().func;
A(); // undefined