ํ์์ํ์ ๋งฅ๋ฝ์ ๋๋ ค๋ค๋์ง ๋ง๊ณ , ํต์ฌ์ ์ฃผ๋์ ์ผ๋ก ํ์ ํด์ผํ๋ค.
Quiz) ๋ค์ IIFE์ ์คํ๊ฒฐ๊ณผ๋?
var foo = {
bar: function () {
return this.baz;
},
baz: 1,
};
(function () {
return typeof arguments[0]();
})(foo.bar);

๊ณต๋ถํ ๋ ๋๊ตฐ๊ฐ๊ฐ ๊ณต๋ถํ ๊ฒ์ ์ฐธ๊ณ ํ๋ฉด ํฐ ๋์์ด ๋๋ค.
์ํ์ฐฉ์ค๊ฐ ์ค์ด๋ค๊ธฐ ๋๋ฌธ์ด๋ค.
ํ์ง๋ง "์ ํํ์ง ์๋ค"๋ ์น๋ช ์ ์ธ ๋จ์ ์ด๋ค.
์์ ์์๋ง ๋ด๋ ํ๋ฆฐ ์ค๋ช ๋๋ฌธ์ ํจ์ฐธ์ ๋ค์ฌ๋ค๋ดค๋ค.
1. '์ต๋ช ํจ์๋ด์์ ์คํ๋ foo.bar()'
์ต๋ช ํจ์๋ด์์๋ foo.bar()๊ฐ ์คํ๋ ๊ฒ์ด ์๋๋ค. foo.bar()๋ ์์ฐํ ๋ฉ์๋์ด๋ค.
์ต๋ช ํจ์๋ด์์๋ function () { return this.baz; }๊ฐ ์คํ๋ ๊ฒ์ด๋ค.
2. '์ ์์ฐ๋ ์ต๋ช ํจ์์ธ๋ฐ'
์ต๋ช ํจ์์์๋ง ๋ฐ์ํ๋ ์ด์๊ฐ ์๋๋ค.
์ ์ฝ๋๋ฅผ ์คํํด๋ด๋ undefiend๊ฐ ๋์จ๋ค.
var foo = {
bar: function () {
return this.baz;
},
baz: 1,
};
function execFoo() {
return console.log(typeof arguments[0]());
}
execFoo(foo.bar);
๋ฌธ์ ์ ํต์ฌ์ foo ์ค๋ธ์ ํธ์์ ์ ์๋ ๋ฉ์๋๊ฐ ์คํ๋์ง ์๊ณ , ๋ค๋ฅธ ์ปจํ ์คํธ์์์ "ํจ์"๋ก์จ ์ ๋ฌ๋์ด ์คํ๋๋ฉด this๋ ํธ์ถ๋ ์ปจํ ์คํธ๋ฅผ ๋ฐ๋ผ๋ณธ๋ค๋ ์ ์ด๊ธฐ ๋๋ฌธ์ด๋ค.
๊ฐ์ ํ) ํต์ฌ์ ํ์ ํ ์ ์๋ "์ข์" ์์
var foo = {
bar: function () {
return this.baz;
},
baz: 1,
};
function execFoo(func) {
return func()
}
console.log(execFoo(foo.bar)) // ?
cosole.log(foo.bar()) // ?'๐ง FeedBack' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [๊ณ ์ฐฐ] ๊ฐ๋ฐ์ฉ ๊ธ์ฐ๊ธฐ ๋๋์๋ณด๊ธฐ (0) | 2022.03.31 |
|---|---|
| [ํ] ๊ตฌ๊ธ๋ง์ ํตํด ๊ณต๋ถํ ๋ ๋ฐ๋์ ์ฃผ์ํ ๊ฒ (0) | 2021.09.08 |