์ผ๋ฐ Function
- ์ผ๋ฐ ํจ์ ์์ this๋ ์์ ์ ๋ง์ง๋ง์ผ๋ก ํ๊ณ ์๋ scope๋ก ๋ณํ๋ค (์ด๋์ "์ ์ธ"ํ๋์ง ์ค์x, ์ด๋์ "ํธ์ถ" ํ๋๋์ ๋ฐ๋ผ ๋ค๋ฆ)
const example = {
name: "world",
speak: function() {
function getName() {
return `${this.name}`;
}
return `Hello ${getName()}`;
}
};
example.speak(); // Hello ๋๋ Hello undefined ์ถ๋ ฅ
//์ด๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด..
const example = {
name: "world",
speak: function() {
//์ฌ๊ธฐ๊น์ง๋ this์ ๊ฐ์ฒด example์ด bind๋ผ์์
const self = this; // self๋ฅผ ์ ์ธํด์ ๊ฒฐํฉ์ํด
function getName() {
return `${self.name}`;
}
return `Hello ${getName()}`;
}
};
example.speak(); // Hello world
Arrow function
- ES6 ๋ถํฐ ์ถ๊ฐ ๋ ํํ ํํ
- ์ต๋ช ํจ์ ์ ์ธ ๋ฐฉ์์ผ๋ก ๊ฐ๊ฒฐํ๊ฒ ์ฝ๋ ์์ฑ ๊ฐ๋ฅ
- ์ด๋ฆ์ ์ง์ ์ง์ด์ค ์ ์๊ณ ๋ณ์์ ๋ด์์ ์ฌ์ฉํด์ผ ํ๋ค
- ์์ ์ปจํ ์คํธ๊ฐ ์ ์ญ (window)
() => {}
๋ชจ์์ ํ๊ณ ์๋คself
๋ฅผ ์ฐ์ง ์์๋ ๋๋ค (์ฒ์ ๋ฐ์ธ๋ฉ ๋ ์ค์ฝํ ์์์ ๊ฐ๋ฆฌํค๋ this๊ฐ ๋ณํ์ง ์์)
//์๋ ๊ฐ์ ์ฝ๋์
const example = {
name: "world",
speak: function() {
const getName = () => {
return `${this.name}`; //this๋ฅผ ์ ์ (lexically)์ผ๋ก ๊ฒฐํฉ์ํด
}
return `Hello ${getName()}`;
}
};
example.speak(); // Hello world
- ์์ ์
this
,arguments
,super
,new.target
์ ๋ฐ์ธ๋ฉ ํ์ง ์์ prototype
์์ฑ ์์- addEventListener ํจ์์ callback ํจ์๋ก ์ฌ์ฉํ๋ฉด ์๋จ (๋ด๋ถ์์ this๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ)
์ฐธ๊ณ
'๐๊ณต๋ถ > JS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript] IIFE(Immediately Invoked Function Expression) (0) | 2021.09.15 |
---|---|
[JavaScript] ์ด๋ฒคํธ ๋ฃจํ (0) | 2021.08.14 |
[JavaScript] JS์ Implicit Return (์์์ ๋ฐํ) (0) | 2021.05.23 |
[JavaScript] innerText vs innerHTML (0) | 2020.11.06 |
[JavaScript] image ๊ฐ์ฒด (0) | 2020.11.06 |
๋๊ธ