์ผ๋ฐ 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 |
๋๊ธ