์ ์ฒด ๊ธ (47) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ ES6+ ํจ์์ ์๋ฐ์คํฌ๋ฆฝํธ OOP์ ์๋ฆฌ ์ฝ๋์คํผ์ธ ๊ฐ์๋ฅผ ๋ฃ๊ณ ๋ณต์ตํ๊ธฐ ์ํด ํฌ์คํ ์ ์ ๋ฆฌํด๋ณด์๋ค. ์ฌ์ค ์๋ฐ์คํฌ๋ฆฝํธ ์์ง๊ณผ OOP๋ ๋ค์ ๊ถํฉ์ด ์ ๋ง๋๋ค. ๊ทธ๋์ ๊ฐ๋ฐ์๊ฐ ๋์ฑ ์ ๊ฒฝ์ ์จ์ผ ํ๋ ์์ญ์ด๋ค. ๊ฐ์ฒด ์งํฅ์ ์ธ ์ค๊ณ๋ ํ๋ก์ ํธ ํ์ฅ์ฑ์ ํฐ ๊ธฐ์ฌ๋ฅผ ํ๊ธฐ ๋๋ฌธ์ ์ด๋ฐ ์ค๊ณ์ ๋ง์ ์๊ฐ์ ๋ค์ฌ์ผ ํ๋ ๊ณ ๋ ์์ ์ด๋ค. ์ฝ๋ ์คํผ์ธ ์์ ์ ๋๋ฒ์งธ ์๊ฐ์ธ๋ฐ ๊ธฐ์ด์ ์ธ ๊ฐ๋ ์ ๋์ด์ ์ค๋ฌด์ ์ ์ฉํ ์ ์์๋งํ ๊ฒฌ๋ฌธ์ ๋ํ ์ ์๋ ์ข์ ๊ฐ์์๋ค. 1ํ์ฐจ sub routine flow๋ ์๋์ฃผ์์ ๊ด์ ์ ๊ฐ์ง๋ค ๋ฉ์ธ ํ๋ก์ฐ, ์๋ธ๋ฃจํด ์ค ๋๊ตฌ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ณด๋์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ค ๋ฉ์ธ ํ๋ก์ฐ๋ ์๋ธ๋ฃจํด์ด ์์ํ๊ณ ๋์์์ผ ํ point ์์น๋ฅผ ๊ฐ์ง๋ค ์๋ธ๋ฃจํด์ด ์ค์ฒฉ๋ ์๋ก ์ค์ฒฉ๋ ์๋ธ๋ฃจํด๋ค์ point๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ๋ชจ๋ keep ํ๋ค = call stac.. ์ปดํ์ผ๋ฌ๋ ๋ ๋ฒ ๊ณต๊ฒฉํ๋ค #ํธ์ด์คํ 4. ํธ์ด์คํ 4.1 ์ปดํ์ผ๋ฌ๋ ๋ ๋ฒ ๊ณต๊ฒฉํ๋ค ํ ์ค์ฝํ ์์์ ์ ์ธ๋ ๋ณ์๋ ๋ฐ๋ก ๊ทธ ์ค์ฝํ์ ์ํ๋ค. ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ก๊ทธ๋จ์ 1์ฅ์ ์ปดํ์ผ๋ฌ ์ด๋ก ์ ๋ฐ๋ผ ์คํ๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด ์ฝ๋๋ฅผ ์ธํฐํ๋ฆฌํ ํ๊ธฐ ์ ์ ์ปดํ์ผํ๋ค. ์ปดํ์ผ๋ ์ด์ ๋จ๊ณ ์ค์๋ ๋ชจ๋ ์ ์ธ๋ฌธ์ ์ฐพ์ ์ ์ ํ ์ค์ฝํ์ ์ฐ๊ฒฐํด์ฃผ๋ ๊ณผ์ ์ด ์์๋ค. ์ด๊ฒ ๋ฐ๋ก 2์ฅ ๋ ์์ปฌ ์ค์ฝํ์ ํต์ฌ์ด๋ค. ๋ณ์์ ํจ์ ์ ์ธ๋ฌธ์ ๋ชจ๋ ์ฝ๋๊ฐ ์ค์ ์คํ๋๊ธฐ ์ ์ ๋จผ์ ์ฒ๋ฆฌ๋๋ค๊ณ ๋ณด๋ฉด ๋๋ค. “var a = 2;”๋ ํ๋์ ๊ตฌ๋ฌธ์ด๋ผ ์๊ฐํ ์ ์์ง๋ง ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ ๊ฐ์ ๊ตฌ๋ฌธ์ผ๋ก ๋ณธ๋ค. var a; // ์ ์ธ๋ฌธ (์ปดํ์ผ๋ ์ด์ ๋จ๊ณ) a = 2; // ๋์ ๋ฌธ (์คํ ๋จ๊ณ) ์ด ๊ณผ์ ์์ ๋ณ์์ ํจ์ ์ ์ธ๋ฌธ์ ์ ์ธ๋ ์์น์์ ์ฝ๋์ ๊ผญ๋๊ธฐ๋ก ๋์ด์ฌ๋ ค์ง๋ค. ์ด๋ .. ๋ณ์๋ฅผ ์ฐพ๊ธฐ ์ํด ์ ์๋ ๊ท์น #์ค์ฝํ 1. ์ค์ฝํ๋ ๋ฌด์์ธ๊ฐ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ๋ณ์์ ๊ฐ์ ์ ์ฅํ๊ณ → ์ ์ฅ๋ ๊ฐ์ ๊ฐ์ ธ๋ค ์ฐ๊ณ → ์์ ํ๋ ํจ๋ฌ๋ค์์ ๊ฐ์ง๋ค. ์ด ๊ธฐ๋ฅ์ ํ๋ก๊ทธ๋จ์์ ์ํ(state)๋ฅผ ๋ํ๋ผ ์ ์๊ฒ ํด์ค๋ค. ๊ทธ๋ ๋ค๋ฉด โ๏ธ ๋ณ์๋ ์ด๋์ ์ ์ฅ๋๋๊ฐ? โ๏ธ ํ์ํ ๋ ํ๋ก๊ทธ๋จ์ ์ด๋ป๊ฒ ๋ณ์๋ฅผ ์ฐพ๋๊ฐ? ํน์ ์ฅ์์ ๋ณ์๋ฅผ ์ ์ฅํ๊ณ ๊ทธ ๋ณ์๋ฅผ ์ฐพ๋ ๋ฐ๋ ์ ์ ์๋ ๊ท์น์ด ํ์ํ๋ฐ ์ด๋ฅผ ์ค์ฝํ๋ผ๊ณ ๋ถ๋ฅธ๋ค. ๊ทธ๋ ๋ค๋ฉด ์ค์ฝํ ๊ท์น์ ์ด๋์ ์ด๋ป๊ฒ ์ ์๋๋๊ฑธ๊น? ์ค์ฝํ ๊ท์น์ ๋ํ ์ปดํ์ผ๋ฌ ์ด๋ก ์ ํ์ธํด ๋ณด์. 1.1. ์ปดํ์ผ๋ฌ ์ด๋ก ๋ณดํต ์๋ฐ์คํฌ๋ฆฝํธ๋ ‘๋์ ' ๋๋ ‘์ธํฐํ๋ฆฌํฐ'์ธ์ด๋ก ๋ถ๋ฅํ๋ ์ฌ์ค์ ‘์ปดํ์ผ๋ฌ ์ธ์ด'๋ค. ์ด๋ค ์๋ฐ์คํฌ๋ฆฝํธ ์กฐ๊ฐ์ด๋ผ๋ ์คํ๋๋ ค๋ฉด ๋จผ์ (๋ณดํต ๋ฐ๋ก ์ง์ ์) ‘์ปดํ์ผ’๋์ด์ผํ๋ค. ์๋ฐ์คํฌ๋ฆฝํธ ์ปดํ์ผ๋ฌ๋ ํ.. ๊ฐ ํ ๋น !== ์ ์ธ #ํ์ 0. ๊ฐ์ YOU DON'T KNOW JS์ ์ฃผ์ ๋ด์ฉ์ ์ ๋ฆฌํ๋ค. ํ๋ก์ ํธ ์งํ ์ค ๋งํ๋ ๊ฐ๋ ์ด ์์ผ๋ฉด ์ฑํฐ ๋ณ๋ก ์ฐพ์์ ์ฝ๋ ๊ฒ์ ๋ชฉ์ ์ผ๋ก ํ๋ค. ์์ ์ฝ๋๋ค์ ES6 ๊ธฐ๋ฐ์ผ๋ก ํ ์คํธํ๋ฉฐ ํ์ตํ๋ฉฐ ์ ๋ฆฌ ๋ด์ฉ์ ๋ธ๋ก๊ทธ์ ์๋ฌ๋ ธํธ์ ํจ๊ป ํฌ์คํ ํ๋ฉฐ ๋ณต๊ธฐํ๋ค. 220215_localStorage, ์ํ๊ด๋ฆฌ ๋ชฉ์ ์ผ๋ก this ์ ๊ทผ์ด ์ด๋ ค์์ this / ํ์ / ์ค์ฝํ ๋ถ๋ถ์ ๊ณต๋ถํ๋ค. PART 1. ํ์ ๊ณผ ๋ฌธ๋ฒ 1. ํ์ 1.2. ๋ด์ฅ ํ์ ์๋ฐ์คํฌ๋ฆฝํธ์ 7๊ฐ์ง ๋ด์ฅ ํ์ null → ์๋ค๋ ํ์ ์ด๋ค! undefined → ์๋ค๋ ํ์ ์ด๋ค! boolean number object → ์ ์ผํ ์ฐธ์กฐํ์ . ๋๋จธ์ง๋ ์์(primitives) ํ์ symbol (ES6 new!) typeof ์ฐ์ฐ์๋ก ํ์ธํ ๊ฐ.. VanillaJS ์คํฐ๋, 2์ฃผ์ฐจ์ ํ๊ณ ๋ก 1์ฃผ์ฐจ ๐ง ํ ๋ง๋ค๊ธฐ์ ์์ด์ค ๋ธ๋ ์ดํน์ ์งํํ๋ฉด์ ๋ณธ๊ฒฉ์ ์ธ 1์ฃผ์ฐจ ๋ฏธ์ ์ด ์์๋๋ค. ๋๋ ์ฌ์ค ๋ธ๋์ปคํผ ์ฝ๋๋ฆฌ๋ทฐ ์คํฐ๋๋ ์ฒ์์ด ์๋๋ค. ์ฝ 1๋ ์ ์ 5๊ธฐ์ ์ฐธ์ฌํ์๋๋ฐ ๊ทธ๋๋ ์ข์์ง๋ง ์ง๊ธ์ ์ ๋ฐ๋ฏธ ๊ฐ์์ ์จ๋ผ์ธ ์ธ์ ์ ํ๋ฆฌํฐ๊ฐ ๋น๊ต ๋ถ๊ฐ์ ๋๋ก ์ข์์ง๋ฉฐ ๋ง์กฑ์ค๋ฌ์ด ์ฝ๋๋ฆฌ๋ทฐ์ ์ธ์ฌ์ดํธ๊ฐ ๊ฐ๋ฅํด ์ง ๊ฒ ๊ฐ๋ค. ์ค๋งํธํ ์คํฐ๋์ ์์ฑ๋ณธ๊ฐ๋ค๊ณ ํ ๊น? ํนํ ๋ฉํ๋ฒ์ค์ notion์ ํตํ ์ธ์ ์งํ ๋ฐฉ์์ ์ ๋ง ์๋ฌ๋๋ค. ์ฐ๋ฆฌ ํ์ 2์ฃผ์ฐจ ์จ๋ผ์ธ ์ธ์ ์ด ์์๋๊ธฐ ์ ์์ฒด ์ฝ๋ ๋ฆฌํฉํ ๋ง์ ์งํํ๊ธฐ๋ก ํ๋ค. ์ด๋ฅผ ์ํด Github Organization์ ๋ฐ๋ก ๋ง๋ค์ด PR์ ์งํํ๋ค. ์คํฐ๋ ์ ์ฅ์์์ fork๋ก ๊ฐ์ ธ์ ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก commit log๋ฅผ ์ ์งํ๋ฉฐ 2๊ฐ์ง remote repo์ ๋์ ๋ฐ์์ด ๊ฐ๋ฅํ .. JavaScript๋ก ์ฝ๋ฉํ ์คํธ ์ค๋นํ๊ธฐ (์ด๋ณด์ ํธ) case 1. ์ ๋ ฅ๊ฐ ์ ์ ๊ฐ ์ต์ฐ์ ! ๊ฐ์ฅ ๋จผ์ ๋ฌธ์ ์์ ๋์จ input ์ ๋ ฅ์ ์ ์ ์ ํ๊ณ , ๋ก์ง์ ์ง๊ธฐ ์ํ ์ ์ ํ ํํ๋ก parsingํ๊ธฐ ์ถ๋ ฅ๊ฐ full string์ ํค์๋(”\n”)๋ก split()์ ํ๋ค๋๊ฐ / +๋ณ์ ๋๋ Number()๋ก ์ซ์๋ก ํ๋ณํ ํด์ค๋ค๋๊ฐ / map()์ ์จ์ array ๋ณํํ๊ธฐ๋ผ๋๊ฐ.. ๊ธฐ๋ณธ์ ์ธ ์ฐ์ฐ API์ ์ต์ํด์ง ๋๊น์ง ์ฐ์ตํ๊ธฐ ๋ธ๋ก๊ทธ๋ค์ ์ฐธ๊ณ ํ๋ฉด ๊ณ ์๋ค์ ์ฌํํ ์ฝ๋๊ฐ ๋ง์๋ฐ, ์ด๋ณด๋ค์ ๋๋ฌด ์ด๋ ค์ธ ๊ฒ์ด๋ค.. ์ถ์ฒํ๋ ๋ฐฉ๋ฒ์ ์ ๋ ฅ ๋ฐ์๋ง์ console.log() ์ฐ์ด๋ณด๋ ๊ฒ. ๋ ๋ช ์์ ์ผ๋ก ๋ฌธ์ ํํธ๋ฅผ ์ป์ ์ ์๋ค. ๊ทธ๋ผ ์ด ๊ฐ์ ๋ ๋ญ ํด์ค์ผํ ๊น? ๊ทธ๋ค์์? → ์ฐจ๊ทผ์ฐจ๊ทผ ๊ฐ์ ์ง์ console.log()๋ก ๊ฐ์ ํ์ธํด๋ณด๋ฉด์ ํผ๋ค. case 1-1 ์ฒ.. ์๋ฃ๊ตฌ์กฐ & ์๊ณ ๋ฆฌ์ฆ ๊ณต๋ถ๋ฅผ ์์ํ๊ธฐ ์ Key Point ์๋ฃ๊ตฌ์กฐ ์๋น์ค๋ ์ดํ๋ฆฌ์ผ์ด์ ์์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ด๋ป๊ฒ ๊ตฌ์กฐ์ ์ผ๋ก ์ ์ ๋ฆฌํด์ ๋ด์๋๊ณ ๊ด๋ฆฌํ๊ณ ์ต์ข ์ ์ผ๋ก ๊ฐ์ฅ ํจ์จ์ ์ธ ๋ฐฉ์์ผ๋ก ํ์ํ ๋ฐ์ดํฐ์ ๋น ๋ฅด๊ฒ ์ ๊ทผํ๊ณ ํํ ์์ ์ฝ์ ์ญ์ ํ ์ ์๋๋ก ๋์์ค๋ค ์๋น์ค์์ ํด๋ผ์ด์ธํธ์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ๊ฑฐ๋ ์ดํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉ์์๊ฒ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ฌ์ฃผ๊ฑฐ๋ ์์ ํ ๋ ํจ์จ์ ์ผ๋ก ์ผ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด์๋ ๊ธฐ๋ฅ์ ์ ํฉํ ์๋ง๋ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฐ๋ ๊ฒ์ด ์ ๋ง ์ค์ํ๋ค. ์ด๋ค ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฐ๋์ ๋ฐ๋ผ ์ฌ์ฉ์๊ฐ ์ํ๋ ๊ธฐ๋ฅ์ ์ํํ๋๋ฐ ์ฒ์ฐจ๋ง๋ณ ์ฐจ์ด๊ฐ ๋๊ฒ ๋๋ค. ์ข ๋ฅ ๋ฐฐ์ด ๋จ์ผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ ์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ ์คํ ํด์ฌํ ์ด๋ธ ์๋ฃ๊ตฌ์กฐ ๊ณต๋ถ ์ Key Point ๋ฐ์ดํฐ๋ค์ ์์ ๋ณด์ฅ ์ฌ๋ถ? ์ค๋ณต ๋ฐ์ดํฐ ๊ฐ๋ฅ ์ฌ๋ถ? ๊ฒ์ํ ๋ ํจ์จ์ ์ธ ์ ๋? ์ํ๋ ๊ธฐ๋ฅ์ ๋ฐ๋ผ ์์ .. JavaScript์์์ OOP (Object Oriented Programming) ๊ฐ์ฒด(Object) ๋? ๋ฌผ๋ฆฌ์ ์ผ๋ก ์กด์ฌํ๊ฑฐ๋ ์ถ์์ ์ผ๋ก ์๊ฐํ ์ ์๋ ๊ฒ ์ค์์ ๊ณ ์ ์์ฑ์ ๊ฐ์ง๊ณ ๋ค๋ฅธ ๊ฒ๊ณผ ์๋ณ ๊ฐ๋ฅํ ๊ฒ ๋ฐ๋ผ์ ์ํํธ์จ์ด์์ ๊ฐ์ฒด๋ฅผ ๋ง๋ ๋ค๋ ๊ฒ์ ๋ฌผ๋ฆฌ์ ์กด์ฌ๋, ์ถ์์ ์๊ฐ์ ๊ตฌํ๋ฌผ๋ค์ ์์ฑ๊ณผ ๋ฉ์๋๋ก ์ ์ํ๋ ๊ณผ์ ์ด๋ผ๊ณ ๋ณผ ์ ์๋ค. ๊ฐ์ฒด์ ๊ตฌ์ฑ ๊ฐ์ฒด = ์์ฑ + ๋ฉ์๋ ์๋ฐ์คํฌ๋ฆฝํธ์์์ Object JS์ ๊ฐ์ฒด ์๋ฃํ ์์ ์๋ฃํ (null, undefined, "string", 10, true, false ...) --> ๊ฐ์ฒด์ฒ๋ผ ๋ค๋ฃจ์ง ์์ผ๋ฉด ๊ฐ์ฒด์ ํน์ฑ์ ๊ฐ์ง์ง ์์ ๊ฐ์ฒด ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ฐ์ดํฐ ์ ์ฅ์ ์ํด ์์ ์๋ฃํ๊ณผ ๊ฐ์ฒด ์ด 2๊ฐ์ง ์ข ๋ฅ์ ์๋ฃํ์ ์ฌ์ฉํ๋ค. ์ซ์๋ ๋ฌธ์์ด ๊ฐ์ ๋จ์ผํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์์ ์๋ฃํ์ ์๋ฐ์คํฌ๋ฆฝํธ ์์์ ์ฌ์ฉํ๋ ๊ธฐ๋ณธ์ ์ธ ๋ฐ์ดํฐ ์ .. ์ด์ 1 2 3 4 5 6 ๋ค์