๊นํ๋ธ๋ฅผ ๋์๋ค๋๋ค๊ฐ ์์ ์ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ์ธํฐ๋ทฐ ์ง๋ฌธ์ด๋ผ๋ ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ๋ณธ์ ์ด ์๋ค. ์ฌ์ค ๊ทธ ๋น์์๋ ๊ทธ๋ฅ ์คํ๋ง ๋๋ฌ๋๊ณ ํฐ ๊ด์ฌ์ด ์์์ง๋ง ์ง๊ธ๋ถํฐ ํ๋์ฉ ํ์ด๋ณด๋ ค ํฉ๋๋ค.
๋ฌผ๋ก ๋ง์ ๋ต๋ค์ด ์ด๋ฏธ ์ด ๋ ํฌ์งํ ๋ฆฌ์ ์์ฑ๋์ด ์๊ธด ํ๋ฐ, ์์ฑ๋์ง ์์ ๊ฒ๋ค๋ ์๊ณ ๋ด ๋ต์ด๋ ๋ชจ๋ฒ๋ต์์ ๋น๊ตํ๋ ๊ฒ๋ ์ข์ ๊ฒ ๊ฐ์์ ํ๋ฒ ํ์ด๋ณด๋ ค ํฉ๋๋ค.
๊ธฐ์กด ๋ ํฌ์งํ ๋ฆฌ์๋ ๋ฌธ์ ์ ๋ถ๋ฅ๊ฐ ์๋์ ๊ฐ์ด ๋์ด์์ต๋๋ค.
๋งค์ผ 1๊ฐ์ง์ฉ ๋์๊ฐ๋ฉฐ ํ ๊ฑด๋ฐ, General Questions ํญ๋ชฉ์์ ๋๋ฌด ์ผ๋ฐ์ ์ธ ๋ฌธ์ ๋ ํ์ง ์์ ๊ฒ์ด๋ค. ๋๋ฌด ์ผ๋ฐ์ ์ธ ๋ฌธ์ ์ ์ ์๋ ์ฌ๋๋ง๋ค ๋ต์ด ๋ค๋ฅผ ์ ์๋ ๋ฌธ์ ์ ๋๋ค.
์ด๋ฅผํ ๋ฉด...
What did you learn yesterday/this week? (์ด์ /์ด๋ฒ์ฃผ์ ๋ฌด์์ ๋ฐฐ์ ๋์)
What excites or interests you about coding? (๋ฌด์์ด ๋น์ ์ ์ฝ๋ฉํ๊ณ ์ถ๊ฒ ๋ง๋๋์?)
What is a recent technical challenge you experienced and how did you solve it?(์ต๊ทผ์ ๊ฒช์ ๊ธฐ์ ์ ์ธ ์ด๋ ค์๊ณผ ๊ทธ๊ฒ์ ์ด๋ป๊ฒ ํด๊ฒฐํ๋์ง ์๋ ค์ฃผ์ธ์)
์ด๋ฌํ ๊ฒ๋ค์ ๋ต๋ณํ์ง ์์ต๋๋ค. ์ด๋ฐ ๋ฌธ์ ๋ ๊ทธ๋๊ทธ๋ ๋ต์ด ๋ฌ๋ผ์ง ์ ์์ต๋๋ค.
๋์ ๋ต๋ณ์ ๋์ ํ๋ฅ ๋ก ํ๋ฆด ์๋ ์์ผ๋ฉฐ, ์๋๋ฉด ๋ง๊ฒ ๊ฐ๋ค๊ฐ ์ค๊ฐ์ ์ด์ํ ๊ธธ๋ก ๋น ์ง ์๋ ์๋ค. ๋๊ธ์ ์์ ๋ง์ ๋ต์ ์ฌ๋ ค์ฃผ๋ฉด ๋งค์ฐ ๊ณ ๋ง์ธ ๊ฒ ๊ฐ์ต๋๋ค.
Explain how
this
works in Javascript and can you give me an example of one of the way that working withthis
has changed in ES6
์๋ฐ์คํฌ๋ฆฝํธ์ ํจ์๋ ํธ์ถ๋ ๋, ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌ๋๋ ์ธ์ ๊ฐ ์ด์ธ์ ์ธ์๋ฅผ Objectํ์์ผ๋ก ๊ฐ์ง๊ณ ์๋ arguments Object
์ this
๋ฅผ ์๋ฌต์ ์ผ๋ก ๋ฐ์ต๋๋ค.
this
๋ ์๋ฐ์์๋ ์ธ์คํด์ค ์์ ์ ๊ฐ๋ฆฌํค๋ ์ฐธ์กฐ๋ณ์๋ก ์ฐ์ด๋ ๋ฐ๋ฉด์, ์๋ฐ์คํฌ๋ฆฝํธ์์๋ ํจ์ ํธ์ถ ๋ฐฉ์์ ๋ฐ๋ผ ๋ฐ์ธ๋ฉ๋๋ this
๊ฐ ๋ค๋ฆ
๋๋ค.
ํจ์ ํธ์ถ ๋ฐฉ์์ ์ผ๋ฐ์ ์ผ๋ก 4๊ฐ์ง๋ก ๋๋ ์ ์์ต๋๋ค.
Obj.func();
func();
new anyInstance();
(() => { })();
var obj = {
func: function() {
console.log(this); // obj
}
}
obj.func();
์ค๋ธ์ ํธ ๋ด๋ถ์ ์ ์ธ๋ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ๊ฒฝ์ฐ this๋ก ํด๋น ์ค๋ธ์ ํธ๋ฅผ ๋ฐํํฉ๋๋ค.
function func1() {
console.log(this); // window
function func2() {
console.log(this); // window
}
}
func1();
ํจ์ ๋ด๋ถ์์ ํธ์ถํ๋์ ๋ฐ๋ผ ์๊ด์์ด this
๋ window๋ฅผ ๋ฐํํฉ๋๋ค.
var obj = {
func: function() {
setTimeout(function() {
console.log(this); // window
});
}
};
obj.func();
์ค๋ธ์ ํธ ๋ด๋ถ์ ๋ค์ด์๋๋ผ๋ ๊ทธ ์์ ๋ ์ฝ๋ฐฑํจ์๋ฅผ ์ ์ธํ๊ณ this๋ฅผ ์ถ๋ ฅํ๋ฉด window๊ฐ ๋์ต๋๋ค.
function newFunc(test){
this.test = test;
console.log("this = ", this); // new -> newFunc / without new -> window
}
new newFunc('abc'); // newFunc
newFunc('abc'); // window
์์ฑ์๋ก ํจ์๋ฅผ ํธ์ถํ๋ ๊ฒฝ์ฐ์๋ this
๊ฐ ํจ์์ self
๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ๋์ง๋ง ๊ทธ๋ฅ ํจ์๋ฅผ ํธ์ถํ๊ฒ ๋๋ฉด ์์ ๋ดค๋ ๊ฒ์ฒ๋ผ window
๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ๋ฉ๋๋ค.
this ๋ฐ์ธ๋ฉ์ด ์๋์ผ๋ก ๋๋ค๊ณ ์๊ฐํ์.
apply/call/bind๋ ๋ฐ์ธ๋ฉ๋ this๋ฅผ ์ฌ์ฉ์๊ฐ ์ง์ ์ ํ ์ ์์ต๋๋ค. ์ด ์ธ ํจ์์ ๊ธฐ๋ฅ์ ๊ฑฐ์ ๋์ผํ๋ฐ, ๋ง์ง๋ง argument๋ฅผ ์ฃผ๋ ๋ฐฉ๋ฒ๋ค์ด ์กฐ๊ธ์ฉ ๋ค๋ฆ ๋๋ค.
๊ทธ๋ฆฌ๊ณ bind์ ๊ฒฝ์ฐ ํจ์๋ฅผ ์คํ์ํค์ง ์๊ณ ๋ฐํํฉ๋๋ค. ์คํ์ํค๋ ค๋ฉด ๋ค์ ()
๋ฅผ ํ๋ฒ ๋ ๋ถ์ฌ์ฃผ๋ฉด ๋ฉ๋๋ค.
func.call(this, arg1, arg2, arg3); // this๋ฅผ ๋ฐ์ธ๋ํ์ฌ ํจ์ ์คํ
func.apply(this, [arg1, arg2, arg3]); // this๋ฅผ ๋ฐ์ธ๋ํ์ฌ ํจ์ ์คํ
func.bind(this, [arg1, arg2, arg3]); // this๋ฅผ ๋ฐ์ธ๋ํ์ฌ ํจ์ ๋ฐํ
ํ์ดํ ํจ์์ ์ํด this๊ฐ ํธ์ถ๋๋ ๊ฒฝ์ฐ, this
๋ ๋ฐ๋ก ์์ ์ค์ฝํ์ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ๋ฉ๋๋ค.
let funcfunc = {
func1: function() {
(() => {
console.log(this); // funcfunc object
})()
}
};
funcfunc.func1();
let funcfunc2 = {
func1: function() {
(function() {
console.log(this); // window object
})()
}
};
funcfunc2.func1();
this
๋ ์์ฑ๋๋ self
๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํต๋๋ค.apply
, call
, bind
๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ this
๋ ํธ์ถ ์ ๋ฐ์ธ๋ฉ ์ํจ ๊ฐ์ฒด์
๋๋ค.object.method()
์ ๊ฐ์ด ํธ์ถํ๋ ๊ฒฝ์ฐ, this
๋ ํจ์๊ฐ ์ํ ๊ฐ์ฒด์
๋๋ค.'use strict'
) ๊ฒฝ์ฐ this
๋ ์ ์ญ ๊ฐ์ฒด ๋์ undefined
๊ฐ ๋ฉ๋๋ค.this
๋ window๊ฐ์ฒด๋ก ๋ณด๋ฉด ๋ฉ๋๋ค.