ํด๋น ํฌ์คํ
์ "์ํ์ฝ๋ฉ"์ ์ด๊ณ ์ ๋์ ๊ฐ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฌ๋ฆฐ ๊ฒ์๊ธ ์
๋๋ค.
์์
์ ์ธ ์ฉ๋๊ฐ ์๋, ๊ฐ์ธ ๊ณต๋ถ ์ ๋ฆฌ ๋ชฉ์ ์ผ๋ก ์ฌ๋ฆฌ๋ ๊ธ์์ ๋ฏธ๋ฆฌ ์๋ฆฝ๋๋ค.
์ ์ญ๊ฐ์ฒด๋?
์ ์ญ๊ฐ์ฒด(Global object)๋ ํน์ํ ๊ฐ์ฒด๋ค. ๋ชจ๋ ๊ฐ์ฒด๋ ์ด ์ ์ญ๊ฐ์ฒด์ ํ๋กํผํฐ๋ค.
<script>
function func(){
alert('Hello?');
}
func();
window.func();
</script>
func();์ window.func();๋ ๋ชจ๋ ์คํ์ด ๋๋ค.
๋ชจ๋ ์ ์ญ๋ณ์์ ํจ์๋ ์ฌ์ค window ๊ฐ์ฒด์ ํ๋กํผํฐ๋ค.
๊ฐ์ฒด๋ฅผ ๋ช
์ํ์ง ์์ผ๋ฉด ์์์ ์ผ๋ก window์ ํ๋กํผํฐ๋ก ๊ฐ์ฃผ๋๋ค.
ํ์์ ๊ทธ๋ฅ ํธํ๊ฒ ์ฌ์ฉํ๊ธฐ ์ํด ์๋ตํด์ ์ฌ์ฉํ๋ ๊ฒ์ผ ๋ฟ์ด๋ค.
๋ด๋ถ์ ์ผ๋ก ๋ช
์ํ ๊ฒ๊ณผ ๊ฐ๊ฒ ๋์ํ๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๋ ์๋์ฐ๋ผ๋ ์ ์ญ๊ฐ์ฒด์ ํ๋กํผํฐ ์ด๋ฏ๋ก, ๊ฐ์ฒด๋ผ๋ ๊ฒ์ ๋ชจ๋ ๊ฒ์ด ์ข
์๋์ด ์๊ธฐ ๋๋ฌธ์
๊ฐ์ฒด ์งํฅ์ธ์ด๋ผ๊ณ ํ๋ ๊ฒ์ด๋ค.
<script>
var o = {'func':function(){
alert('Hello?');
}}
o.func();
window.o.func();
</script>
์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ชจ๋ ๊ฐ์ฒด๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ์ญ๊ฐ์ฒด์ ํ๋กํผํฐ์์ ์ ์ ์๋ค.
์ ์ญ๊ฐ์ฒด API
ECMAScript์์๋ ์ ์ญ๊ฐ์ฒด์ API๋ฅผ ์ ์ํด๋์๋ค. ๊ทธ ์ธ์ API๋ ํธ์คํธ ํ๊ฒฝ์์ ํ์์ ๋ฐ๋ผ์ ์ถ๊ฐ๋ก ์ ์ํ๊ณ ์๋ค.
์ด๋ฅผํ
๋ฉด ์น๋ธ๋ผ์ฐ์ ์๋ฐ์คํฌ๋ฆฝํธ์์๋ alert()์ด๋ผ๋ ์ ์ญ๊ฐ์ฒด์ ๋ฉ์๋๊ฐ ์กด์ฌํ์ง๋ง node.js์๋ ์กด์ฌํ์ง ์๋๋ค.
๋ํ ์ ์ญ๊ฐ์ฒด์ ์ด๋ฆ๋ ํธ์คํธํ๊ฒฝ์ ๋ฐ๋ผ์ ๋ค๋ฅธ๋ฐ, ์น๋ธ๋ผ์ฐ์ ์์ ์ ์ญ๊ฐ์ฒด๋ window์ด์ง๋ง node.js์์๋ global์ด๋ค.
์ฆ node.js์ ๊ฐ์ ๊ฒฝ์ฐ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ์ window์ ๊ฐ์ ์ ์ญ ๊ฐ์ฒด ์ญํ ์ ํ๋ ๊ฒ์ด global์ธ๊ฒ์ด๋ค.