let's get IT with DAVINA ๐ป
[Inside JavaScript] Chapter 1. ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ๋ณธ ๊ฐ์ ๋ณธ๋ฌธ
[Inside JavaScript] Chapter 1. ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ๋ณธ ๊ฐ์
๋ค๋น์น์ฝ๋๐ 2023. 3. 27. 18:201.1 ์๊ฐ
์๋ฐ์คํฌ๋ฆฝํธ๋ ์น ๋ธ๋ผ์ฐ์ ์์ ๋์ํ๋ ์คํฌ๋ฆฝํธ ์ธ์ด์ด๋ค.
์ฒ์์ ์น ํ์ด์ง ์ ์์ ์์ด์ ๋ณด์กฐ์ ์ธ ๊ธฐ๋ฅ์ ์ํํ๊ธฐ ์ํ ์ฉ๋๋ก์จ ์ฌ์ฉํ์ฌ ์ฃผ๋ชฉ๋ฐ์ง ๋ชปํ๋ ์ธ์ด..๐ฅฒ
BUT, prototype.js์ ๊ฐ์ ์ฃผ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด ๊ฐ๋ฐ๋๊ณ && jQuery์ ๋ฑ์ฅ์ผ๋ก ๋ณด๋ค ์ฝ๊ฒ DOM(Document Object Model)์ ํธ๋ค๋งํ๊ฒ ๋๋ฉด์ ๋ง์ ๋ฐ์ ์ ์ด๋ฃจ์๋ค.
1.2 ์๋ฐ์คํฌ๋ฆฝํธ ํ์ฉ ๋ฒ์
1.2.1 ์น ๊ฐ๋ฐ
ํฌ๋กฌ์ด๋ ํ์ด์ดํญ์ค ๋ฑ ์น ๋ธ๋ผ์ฐ์ ๋ค์ด ๋๋ ์ด ๋ฐ์ ํ๋ฉด์ ์๋ก์ด ๋ฒ์ ์ ๋ด๋์๋๋ง๋ค ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์ฑ๋ฅ ํฅ์์ ๊ฐ์กฐํ๋ค. ์ด๋ ์น ํ์ด์ง ๊ฐ๋ฐ์ ์์ด ์๋ฐ์คํฌ๋ฆฝํธ์ ์ญํ ์ด ์ผ๋ง๋ ํฐ์ง๋ฅผ ๋ฐฉ์ฆํ๋ค.
1.2.2 ์๋ฒ ๊ฐ๋ฐ
Node.js์ ์ถํ์ผ๋ก ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ํ์ฉํ ์๋ฒ ๊ฐ๋ฐ๋ ํ๋ฐํ ์ด๋ฃจ์ด์ง๊ณ ์๋ค. express, socket.io ๋ฑ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ณด๋ค ์ฝ๊ฒ JS๋ก ์๋ฒ๋ฅผ ๊ฐ๋ฐํ ์ ์๋ ํ๊ฒฝ์ ์ ๊ณตํด์ค๋ค.
1.2.3 ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ
์น์ด ํ๋์ ํ๋ซํผ์ผ๋ก ์งํํ๋ฉด์, ์นOS์ ์ค์์ฑ์ด ์ปค์ก๋ค. ์ด๋ฌํ ์น ๊ธฐ๋ฐ ํ๋ซํผ์์ ๊ตฌ๋๋๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ ํ์์ ์ธ ์์๊ฐ ๋์๋ค. ํนํ ํฐ๊ฐญ(PhoneGap)๊ณผ ๊ฐ์ ํฌ๋ก์ค ํ๋ซํผ ๊ฐ๋ฐ ๋๊ตฌ๋ฅผ ์ด์ฉํ๋ฉด DOM์์๋ฅผ ํธ๋ค๋งํ์ฌ ๋ ๋๋งํ๋ ๊ฒ์์๋ถํฐ ๋ ๋์๊ฐ ๋๋ฐ์ด์ค์ ๋์์ ๋ํ ์ ์ด๊ฐ ๊ฐ๋ฅํด์ง๊ณ ์๋ค.
1.3 ์๋ฐ์คํฌ๋ฆฝํธ ํต์ฌ ๊ฐ๋
1.3.1 ๊ฐ์ฒด
์๋ฐ์คํฌ๋ฆฝํธ์ "๊ฑฐ์" ๋ชจ๋ ๊ฒ์ "๊ฐ์ฒด"์ด๋ค.
์์ธ) boolean, number, string (์์์๋ฃํ) / null, undefined
1.3.2 ํจ์
์๋ฐ์คํฌ๋ฆฝํธ์์๋ ํจ์๋ ๊ฐ์ฒด๋ก ์ทจ๊ธํ๋ค. (์ผ๋ฐ ๊ฐ์ฒด๋ณด๋ค ์กฐ๊ธ ๋ ๋ง์ ๊ธฐ๋ฅ์ด ์๋ ๊ฐ์ฒด)
ํจ์๊ฐ ์ค์ํ ์ด์ ? ํจ์๊ฐ ์ผ๊ธ ๊ฐ์ฒด(First Class Object)๋ก ๋ค๋ค์ง๊ธฐ ๋๋ฌธ์ด๋ค.
1.3.3 ํ๋กํ ํ์
๋ชจ๋ ๊ฐ์ฒด๋ ์จ๊ฒจ์ง ๋งํฌ์ธ prototype์ ๊ฐ์ง๋ค. ์ด ๋งํฌ๋ ํด๋น ๊ฐ์ฒด๋ฅผ ์์ฑํ ์์ฑ์์ ํ๋กํ ํ์ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํจ๋ค.
1.3.4 ์คํ ์ปจํ ์คํธ์ ํด๋ก์
์๋ฐ์คํฌ๋ฆฝํธ๋ ์์ ๋ง์ ๋ ํนํ ๊ณผ์ ์ผ๋ก ์คํ ์ปจํ ์คํธ๋ฅผ ๋ง๋ค๊ณ ๊ทธ ์์์ ์คํ์ด ์ด๋ค์ง๋ค.
์ด ์คํ ์ปจํ ์คํธ๋ ์์ ๋ง์ ์ ํจ ๋ฒ์(scope)๋ฅผ ๊ฐ๋๋ฐ, ์ด ๊ณผ์ ์์ ํด๋ก์ ๋ฅผ ๊ตฌํํ ์ ์๋ค.
1.4 ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ
์๋ฐ์คํฌ๋ฆฝํธ๋ ํด๋์ค๋ฅผ ์ง์ํ์ง ์์ง๋ง ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ด ๊ฐ๋ฅํ๋ค.
HOW? ํ๋กํ ํ์ ์ฒด์ธ & ํด๋ก์ ๋ก ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ ์ ์ํ๋ ์์, ์บก์ํ, ์ ๋ณด ์๋ ๋ฑ์ ๊ฐ๋ ์ ์ํํ ์ ์๋ค.
1.5 ์๋ฐ์คํฌ๋ฆฝํธ์ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ
์๋ฐ์คํฌ๋ฆฝํธ๋ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ด ๊ฐ๋ฅํ๋ค.
ํจ์ํ ํ๋ก๊ทธ๋๋ฐ
๋์ ์์ค์ ๋ชจ๋ํ๋ฅผ ๊ฐ๋ฅ์ผ ํ๋ ๋งค์ฐ ํจ์จ์ ์ธ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ๋ฒ
HOW? JS์ ์ฃผ์ ํน์ฑ์ธ ์ผ๊ธ ๊ฐ์ฒด๋ก์์ ํจ์ ํน์ฑ๊ณผ ํด๋ก์ ๋ฅผ ํ์ฉ
BUT! this makes ๊ฐ๋ ์ฑ bad
1.5 ์๋ฐ์คํฌ๋ฆฝํธ์ ๋จ์
- ์ ์ฐํ ์ธ์ด → ๋๋ฒ๊น ์ด๋ ค์
- ๋์จํ ํ์ ์ฒดํฌ → ์ปดํ์ผ ํ์์์ ์ก์ง ๋ชปํ๋ ์ค๋ฅ๋ ๊ณ ์ค๋ํ ๋ฐํ์ ์ค๋ฅ๋ก ๋ฐ๊ฒฌ๋๋ค.
- ์ ์ญ ๊ฐ์ฒด์ ์กด์ฌ → ์ด๋ฆ ์ถฉ๋์ ์ํ์ฑ
'DEV_IN > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Module (2) | 2023.02.28 |
---|---|
This (6) | 2023.02.28 |
Prototype (5) | 2023.02.28 |
JavaScript Event Loop๋? (4) | 2023.02.22 |
priceFormatter (0) | 2023.02.08 |