This
๊ฐ์
โ ์ด๋ ํ object๋ฅผ ๊ฐ๋ฆฌํค๋ ํค์๋
โ JavaScript์ ํจ์๋ ํธ์ถ๋ ๋ this๋ฅผ ์๋ฌต์ ์ผ๋ก ์ ๋ฌ ๋ฐ์
โ JavaScript์์์ this๋ ์ผ๋ฐ์ ์ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ค๋ฅด๊ฒ ๋์
โ JavaScript๋ ํด๋น ํจ์์ ํธ์ถ ๋ฐฉ์์ ๋ฐ๋ผ this์ ๋ฐ์ธ๋ฉ ๋๋ ๊ฐ์ฒด๊ฐ ๋ฌ๋ผ์ง๋ค.
โ ์ฆ ํจ์๋ฅผ ์ ์ธํ ๋ ๊ฒฐ์ ๋๋ ๊ฒ์ด ์๋๋ผ, ํจ์๋ฅผ ํธ์ถํ ๋ ํจ์๊ฐ ์ด๋ป๊ฒ ํธ์ถ๋์๋์ง์ ๋ฐ๋ผ ๋์ ์ผ๋ก ๊ฒฐ์
this INDEX
- ์ ์ญ ๋ฌธ๋งฅ์์์ this
- ํจ์ ๋ฌธ๋งฅ์์์ this
- ๋จ์ ํธ์ถ
- Method(๊ฐ์ฒด์ ๋ฉ์๋๋ก์)
- Nested
์ ์ญ ๋ฌธ๋งฅ์์์ this
โ ๋ธ๋ผ์ฐ์ ์ ์ ์ญ ๊ฐ์ฒด์ธ window๋ฅผ ๊ฐ๋ฆฌํจ๋ค.
- ์ ์ญ ๊ฐ์ฒด๋ ๋ชจ๋ ๊ฐ์ฒด์ ์ ์ผํ ์ต์์ ๊ฐ์ฒด๋ฅผ ์๋ฏธ
console.log(this) // window
ํจ์ ๋ฌธ๋งฅ์์์ this
- ๋จ์ ํธ์ถ
- ์ ์ญ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํจ๋ค.
- ์ ์ญ์ ๋ธ๋ผ์ฐ์ ์์๋ window, Node.js๋ global์ ์๋ฏธํจ
const myFunc = function() {
console.log(this)
}
// ๋ธ๋ผ์ฐ์
myFunc() // window
// Node.js
myFunc() // global
- Method (Function in Object, ๊ฐ์ฒด์ ๋ฉ์๋๋ก์)
- ๋ฉ์๋๋ก ์ ์ธํ๊ณ ํธ์ถํ๋ค๋ฉด, ๊ฐ์ฒด์ ๋ฉ์๋์ด๋ฏ๋ก ํด๋น ๊ฐ์ฒด๊ฐ ๋ฐ์ธ๋ฉ
const myObj = {
data: 1,
myFunc() {
console.log(this) // myobj
console.log(this.data) // 1
}
}
myObj.myFunc() // myObj
- Nested(Function ํค์๋)
- forEach์ ์ฝ๋ฐฑ ํจ์์์์ this๊ฐ ๋ฉ์๋์ ๊ฐ์ฒด๋ฅผ ์นด๋ฆฌํค์ง ๋ชปํ๊ณ ์ ์ญ ๊ฐ์ฒด window๋ฅผ ๊ฐ๋ฆฌํด
- ๋ฉ์๋๊ฐ ์๋ ๋จ์ ํธ์ถ๋ก ์ฌ์ฉ๋์๊ธฐ ๋๋ฌธ
- ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฑ์ฅํ ๊ฒ์ด ํ์ดํ ํจ์
const myObj = {
numbers: [1],
myFunc() {
console.log(this) //myObj
this.numbers.forEach(function (number) {
console.log(number) // 1
console.log(this) // window)
})
}
}
- Nested (ํ์ดํ ํจ์)
- ์ด์ ์ ์ผ๋ฐ function ํค์๋์ ๋ฌ๋ฆฌ ๋ฉ์๋์ ๊ฐ์ฒด๋ฅผ ์ ๊ฐ๋ฆฌํด
- ํ์ดํ ํจ์์์ this๋ ์์ ์ ๊ฐ์ผ ์ ์ ๋ฒ์
- ์๋์ผ๋ก ํ ๋จ๊ณ ์์์ scope์ context๋ฅผ ๋ฐ์ธ๋ฉ
const myObj = {
numbers: [1],
myFunc() {
console.log(this) //myObj
this.numbers.forEach((number) => {
console.log(number) // 1
console.log(this) // myObj)
})
}
}
ํ์ดํ ํจ์
โ ํ์ดํ ํจ์๋ ํธ์ถ์ ์์น์ ์๊ด ์์ด ์์ ์ค์ฝํ๋ฅผ ๊ฐ๋ฆฌํด
โ Lexical scope
- ํจ์๋ฅผ ์ด๋์ ํธ์ถํ๋์ง๊ฐ ์๋๋ผ ์ด๋์ ์ ์ธํ์๋์ง์ ๋ฐ๋ผ ๊ฒฐ์
- static scope๋ผ๊ณ ๋ ํ๋ฉฐ ๋๋ถ๋ถ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ๋ฐ๋ฅด๋ ๋ฐฉ์
- ํจ์ ๋ด๋ถ์ ํจ์๋ ํ์ดํ ํจ์๋ฅผ ์ฐ๋ ๊ฒ ๊ถ์ฅ
this์ addEventListener
โ However...
addEventListner
์์์ ์ฝ๋ฐฑ ํจ์๋ ํน๋ณํ๊ฒ function ํค์๋์ ๊ฒฝ์ฐaddEventListner
๋ฅผ ํธ์ถํ ๋์(event.tartet)๋ฅผ ๋ํ๋- ๋ฐ๋ฉด ํ์ดํ ํจ์์ ๊ฒฝ์ฐ ์์ ์ค์ฝํ๋ฅผ ์ง์ ํ๊ธฐ ๋๋ฌธ์ window ๊ฐ์ฒด๊ฐ ๋ฐ์ธ๋ฉ ๋๋ค.
โ addEventListener
์ ์ฝ๋ฐฑ ํจ์๋ function ํค์๋๋ฅผ ์ฌ์ฉ!
์ ๋ฆฌ
โ this๋ ํธ์ถ๋๋ ์๊ฐ์ ๊ฒฐ์ ๋๋ค
โ ์ฅ์
- ํจ์(๋ฉ์๋)๋ฅผ ํ๋๋ง ๋ง๋ค์ด์ ์ฌ๋ฌ ๊ฐ์ฒด์์ ์ฌ์ฌ์ฉ ํ ์ ์๋ค.
โ ๋จ์
- ์ค์๋ก ์ด์ด์ง๊ธฐ ์ฝ๋ค
โ ์ข๊ณ ๋์๊ณ ๋ฅผ ํ๋จํ๊ธฐ๋ณด๋ค๋ ์ด๋ป๊ฒ ํ์ฉํ ์ ์์๊น๋ฅผ ์๊ฐํ์!!
'โญ Personal_Study > Javascript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋๊ธฐ์ ๋น๋๊ธฐ (0) | 2022.11.04 |
---|---|
Callback & Promise (0) | 2022.11.04 |
Event (0) | 2022.11.02 |
JavaScript๋ฅผ ํ์ฉํ DOM ์กฐ์ ๊ธฐ์ด (0) | 2022.11.02 |
DOM (Document Object Model) (0) | 2022.11.01 |
๋๊ธ