[Javasciprt] (ES6) Arrow Function์ this
ES6 ๋ฌธ๋ฒ์ ์ฌ์ฉํ๋ฉด์ ๋ถํธํจ์ ๋ชป ๋๋ผ๊ณ ์ฌ์ฉํ๊ณ ์์์ง๋ง
์์ ์ ํ๋ ๋์ค Arrow Function this์ ์๋ฏธ๊ฐ ๊ธฐ์กด๊ณผ๋ ๋ค๋ฅด๋ค๋ ๊ฑธ ์๊ฒ ๋์๋ค.
์ฌ๊ธฐ์ function ๊ฐ์ฒด์ call ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด this๊ฐ์ ํธ์ถํ Object๋ฅผ ๊ฐ๋ฆฌํจ๋ค.
function() ์ฌ์ฉ
// function() ์ฌ์ฉ
function function1() {
console.log(this.name);
return {
name: 'ํ๊ธธ๋',
getName: function () {
// ์ฌ๊ธฐ์์ this๋ ์์ ์ Object๋ด์ this๋ฅผ ๊ฐ๋ฅดํด
console.log(this.name);
},
};
}
function1.call({ name: '์ํฅ๋ฏผ' }).getName();
// ์ํฅ๋ฏผ
// ํ๊ธธ๋
Arrow Function ์ฌ์ฉ
// Arrow Function ์ฌ์ฉ
function function2() {
console.log(this.name);
return {
name: 'ํ๊ธธ๋',
//* arrow function์ ์์ ์ ํฌํจํ๋ ์ธ๋ถ scope์์ this๋ฅผ ๊ณ์น๋ฐ๋๋ค.
//์ฆ, arrow function์ ์์ ๋ง์ this๋ฅผ ์์ฑํ์ง ์๋๋ค. (Lexical this)
getName: () => {
console.log(this.name);
},
};
}
function2.call({ name: '์ํฅ๋ฏผ' }).getName();
// ์ํฅ๋ฏผ
// ์ํฅ๋ฏผ
์์ง ์ค๋ฌด์์ ์ด๋ป๊ฒ ํ์ฉํ๋ฉด ์ข์์ง๋ ๊ฐ์ด ์ค์ง ์์ง๋ง ๊ทธ๋๋ ํน์ฌ๋ ES6 ๋ฌธ๋ฒ์ผ๋ก ์์ ์
์๋์ ๊ฐ์ ๋ฌธ์ ๋ฅผ ์ธ์ํ๊ณ ์์ผ๋ฉด ์์ ์ด ์ํ๋ ๋ฐฉํฅ์ผ๋ก ์ฝ๋ฉ์ ํ๋ ๋ฐ ๋์์ด ๋ ๊ฒ์ด๋ค.
๋ค๋ฅธ ๊ธ ์ฝ์ด๋ณด๊ธฐ โฌ๏ธ
ExceptionTry-With-Resources