Programming/Javascript (9) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ [์ธ์ฌ์ด๋ ์๋ฐ์คํฌ๋ฆฝํธ] ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐ์ดํฐ ํ์ ๊ณผ ์ฐ์ฐ์ 7 - ์ฐ์ฐ์ ์ฐ์ฐ์ ์๋ฐ์คํฌ๋ฆฝํธ ์ฐ์ฐ์์ ๋๋ถ๋ถ์ ๋ค๋ฅธ ์ธ์ด์ ์ ์ฌํ๋ค. ๋ช ๊ฐ์ง ์ฃผ์ํด์ผ ํ ์ฐ์ฐ์๋ค์ ๋ํด์ ๊ฐ๋จํ ์์๋ณด์. 1. + ์ฐ์ฐ์ + ์ฐ์ฐ์๋ ๋ํ๊ธฐ ์ฐ์ฐ๊ณผ ๋ฌธ์์ด ์ฐ๊ฒฐ ์ฐ์ฐ์ ์ํํ๋ค. ๋ ์ฐ์ฐ์๊ฐ ๋ชจ๋ ์ซ์์ผ ๊ฒฝ์ฐ์๋ง ๋ํ๊ธฐ ์ฐ์ฐ์ด ์ํ๋๊ณ , ๋๋จธ์ง๋ ๋ฌธ์์ด ์ฐ๊ฒฐ ์ฐ์ฐ์ด ์ด๋ค์ง๋ค. 2. typeof ์ฐ์ฐ์ typeof ์ฐ์ฐ์๋ ํผ์ฐ์ฐ์์ ํ์ ์ ๋ฌธ์์ด ํํ๋ก ๋ฆฌํดํ๋ค. ์ฌ๊ธฐ์ null๊ณผ ๋ฐฐ์ด์ด 'object'๋ผ๋ ์ , ํจ์๋ 'function'์ด๋ผ๋ ์ ์ ์ ์ํด์ผ ํ๋ค. 3. == (๋๋ฑ) ์ฐ์ฐ์์ === (์ผ์น) ์ฐ์ฐ์ ์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ ๊ฐ์ด ๋์ผํ์ง๋ฅผ ํ์ธํ๋ ๋ฐ, ๋ ์ฐ์ฐ์๋ฅผ ๋ชจ๋ ์ฌ์ฉํ ์ ์๋ค. == ์ฐ์ฐ์ : ๋น๊ตํ๋ ค๋ ํผ์ฐ์ฐ์์ ํ์ ์ด ๋ค๋ฅผ ๊ฒฝ์ฐ์ ํ์ ๋ณํ์ ๊ฑฐ์น ๋ค์ ๋น๊ตํ๋ค. .. [์ธ์ฌ์ด๋ ์๋ฐ์คํฌ๋ฆฝํธ] ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐ์ดํฐ ํ์ ๊ณผ ์ฐ์ฐ์ 6 - ๊ธฐ๋ณธ ํ์ ๊ณผ ํ์ค ๋ฉ์๋ ๊ธฐ๋ณธ ํ์ ๊ณผ ํ์ค ๋ฉ์๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ซ์, ๋ฌธ์์ด, ๋ถ๋ฆฐ๊ฐ์ ๋ํด ๊ฐ ํ์ ๋ณ๋ก ํธ์ถ ๊ฐ๋ฅํ ํ์ค ๋ฉ์๋๋ฅผ ์ ์ํ๊ณ ์๋ค. ํ์ง๋ง ๊ธฐ๋ณธ ํ์ ์ ๊ฒฝ์ฐ๋ ๊ฐ์ฒด๊ฐ ์๋๋ฐ ์ด๋ป๊ฒ ๋ฉ์๋๋ฅผ ํธ์ถํ ์ ์์๊น? ๊ธฐ๋ณธ ํ์ ์ ๊ฐ๋ค์ ๋ํด์ ๊ฐ์ฒด ํํ๋ก ๋ฉ์๋๋ฅผ ํธ์ถํ ๊ฒฝ์ฐ, ์ด๋ค ๊ธฐ๋ณธ๊ฐ์ ๋ฉ์๋ ์ฒ๋ฆฌ ์๊ฐ์ ๊ฐ์ฒด๋ก ๋ณํ๋ ๋ค์ ๊ฐ ํ์ ๋ณ ํ์ค ๋ฉ์๋๋ฅผ ํธ์ถํ๊ฒ ๋๋ ๊ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฉ์๋ ํธ์ถ์ด ๋๋๋ฉด ๋ค์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ๋ณต๊ทํ๊ฒ ๋๋ค. toExponential() : ํ์ค ์ซ์ํ ๋ฉ์๋์ด๋ค. ์ซ์๋ฅผ ์ง์ ํํ์ ๋ฌธ์์ด๋ก ๋ณํํ๋ค. ์ธ์๋ก ๋ฐ๋ ๊ฐ์ ์์์ ์๋ ๋ช ๋ฒ์งธ ์๋ฆฌ๊น์ง ํ์ํ ๊ฒ์ธ์ง ์ง์ ํ๋ ๊ฒ์ด๋ค. charAt() : ํ์ค ๋ฌธ์์ด ๋ฉ์๋์ด๋ค. ๋ฌธ์์ด์์ ์ธ์๋ก ๋ฐ์ ์์น์ ์๋ ๋ฌธ์๋ฅผ ๋ฐํํ๋ค. ๋ฌธ์์ด ์ธ.. [ES6] Symbol ํ์ ์ฌ๋ฒ(Symbol)์ ES6์์ ์ฒ์ ์ ๋ณด์ธ, ์๋ก์ด ์์ ๊ฐ ํ์ ์ด๋ค. ์ฌ๋ฒ์ ์ถฉ๋ ์ผ๋ ค ์์ด ๊ฐ์ฒด ํ๋กํผํฐ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ, ํน๋ณํ '์ ์ผ ๊ฐ'์ด๋ค.(์ ๋์ ์ผ๋ก ์ ์ผํจ์ด ๋ณด์ฅ๋์ง๋ ์๋๋ค.) ์ฃผ๋ก ES6์ ํน์ํ ๋ด์ฅ ๋ก์ง์ ์ฐ๊ธฐ ์ํด ๊ณ ์๋์์ง๋ง, ์ฌ์ฉ์๋ ์ผ๋ง๋ ์ง ์ฌ๋ฒ์ ์ ์ํ ์ ์๋ค. ES6์๋ ์ฌ๋ฒ ๋ช ๊ฐ๊ฐ ๋ฏธ๋ฆฌ ์ ์๋์ด ์๋๋ฐ Symbol.create, Symbol.iterator ์์ผ๋ก Symbol ํจ์ ๊ฐ์ฒด์ ์ ์ ํ๋กํผํฐ๋ก ์ ๊ทผํ๋ค. ์ฌ์ฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค. ์ฌ๋ฒ์ ์ ์ํ๋ ค๋ฉด Symbol() ๋ค์ดํฐ๋ธ๋ฅผ ์ฌ์ฉํ๋ค. Symbol()์ ์์ new๋ฅผ ๋ถ์ด๋ฉด ์๋ฌ๊ฐ ๋๋, ์ ์ผํ ๋ค์ดํฐ๋ธ '์์ฑ์'๋ค. ์ฌ๋ฒ์ ์ ์ฉ(private) ํ๋กํผํฐ๋ ์๋์ง๋ง(Object.getOwnPropertySymb.. [์ธ์ฌ์ด๋ ์๋ฐ์คํฌ๋ฆฝํธ] ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐ์ดํฐ ํ์ ๊ณผ ์ฐ์ฐ์ 5 - ๋ฐฐ์ด 2 ๋ฐฐ์ด ๋ฐฐ์ด์ ํ๋กํผํฐ ๋์ ์์ฑ ๋ฐฐ์ด๋ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด์ด๋ฏ๋ก, ์ธ๋ฑ์ค๊ฐ ์ซ์์ธ ๋ฐฐ์ด ์์ ์ด์ธ์๋ ๊ฐ์ฒด์ฒ๋ผ ๋์ ์ผ๋ก ํ๋กํผํฐ๋ฅผ ์ถ๊ฐํ ์ ์๋ค. ๋์ ํ๋กํผํฐ๊ฐ ์ถ๊ฐ๋ ๊ฒฝ์ฐ ๋ฐฐ์ด์ length ๊ฐ์ ๋ฐ๋์ง ์๋๋ค. ๋ฐฐ์ด์ length ํ๋กํผํฐ๋ ๋ฐฐ์ด ์์์ ๊ฐ์ฅ ํฐ ์ธ๋ฑ์ค๊ฐ ๋ณํ์ ๊ฒฝ์ฐ๋ง ๋ณ๊ฒฝ๋๋ค. ๋ฐฐ์ด์ ํ๋กํผํฐ ์ด๊ฑฐ ๊ฐ์ฒด๋ for in ๋ฌธ์ผ๋ก ํ๋กํผํฐ๋ฅผ ์ด๊ฑฐํ๋ค. ๋ฐฐ์ด๋ ๊ฐ์ฒด์ด๋ฏ๋ก for in ๋ฌธ์ ์ฌ์ฉํด์ ๋ฐฐ์ด ๋ด์ ๋ชจ๋ ํ๋กํผํฐ๋ฅผ ์ด๊ฑฐํ ์ ์์ง๋ง, ์ด๋ ๊ฒ ๋๋ฉด ๋ถํ์ํ ํ๋กํผํฐ๊ฐ ์ถ๋ ฅ๋ ์ ์์ผ๋ฏ๋ก ๋๋๋ก for ๋ฌธ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค. ๋ฐฐ์ด ์์ ์ญ์ ๋ฐฐ์ด๋ ๊ฐ์ฒด์ด๋ฏ๋ก, ๋ฐฐ์ด ์์๋ ํ๋กํผํฐ๋ฅผ ์ญ์ ํ๋ ๋ฐ delete ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค. delete arr[2]๋ก ๋ฐฐ์ด์ ์์๋ฅผ ์ญ์ .. [ES6] ES6 (ES2015) ๋ฌธ๋ฒ ์ฌ๋ฌ๊ฐ์ง 1. const, let ๋ณดํต ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๋ฐฐ์ธ ๋ var๋ก ๋ณ์๋ฅผ ์ ์ธํ๋ ๋ฐฉ๋ฒ๋ถํฐ ๋ฐฐ์ฐ์ง๋ง var๋ ์ด์ const์ let์ด ๋์ฒดํ๋ค. ๋ธ๋ก ์ค์ฝํ โ var๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ โ const๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ var๋ ํจ์ ์ค์ฝํ๋ฅผ ๊ฐ์ง๋ฏ๋ก if๋ฌธ์ ๋ธ๋ก๊ณผ ๊ด๊ณ์์ด ์ ๊ทผ ๊ฐ๋ฅํ๋ค. ํ์ง๋ง const์ let์ ๋ธ๋ก ์ค์ฝํ๋ฅผ ๊ฐ์ง๋ฏ๋ก ๋ธ๋ก ๋ฐ์์๋ ๋ณ์์ ์ ๊ทผํ ์ ์๋ค. ๋ธ๋ก์ ๋ฒ์๋ if, while, for, function ๋ฑ์ ์ค๊ดํธ์ด๋ค. → ํจ์ ์ค์ฝํ ๋์ ๋ธ๋ก ์ค์ฝํ๋ฅผ ์ฌ์ฉํจ์ผ๋ก์จ ํธ์ด์คํ ๊ฐ์ ๋ฌธ์ ๋ ํด๊ฒฐ๋๊ณ ์ฝ๋ ๊ด๋ฆฌ๋ ์์ํด์ง const์ let์ ์ฐจ์ด const๋ ํ ๋ฒ ๋์ ํ๋ฉด ๋ค๋ฅธ ๊ฐ์ ๋์ ํ ์ ์๋ค. const์ ๋ค๋ฅธ ๊ฐ์ ๋์ ํ๋ ค ํ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๋ฉฐ, ์ด๊ธฐํ ์ ๊ฐ์ ๋์ ํ.. [์ธ์ฌ์ด๋ ์๋ฐ์คํฌ๋ฆฝํธ] ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐ์ดํฐ ํ์ ๊ณผ ์ฐ์ฐ์ 4 - ๋ฐฐ์ด ๋ฐฐ์ด์ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด์ ํน๋ณํ ํํ๋ค. ์ฆ, C๋ ์๋ฐ์ ๋ฐฐ์ด๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ํ๋ ๊ฐ์ฒด์ง๋ง, ์ด๋ค๊ณผ๋ ๋ค๋ฅด๊ฒ ๊ตณ์ด ํฌ๊ธฐ๋ฅผ ์ง์ ํ์ง ์์๋ ๋๋ฉฐ, ์ด๋ค ์์น์ ์ด๋ ํ์ ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋๋ผ๋ ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์๋๋ค. ๋ฐฐ์ด ๋ฆฌํฐ๋ด ๋ฐฐ์ด ๋ฆฌํฐ๋ด์ ์๋ฐ์คํฌ๋ฆฝํธ์์ ์๋ก์ด ๋ฐฐ์ด์ ๋ง๋๋ ๋ฐ ์ฌ์ฉํ๋ ํ๊ธฐ๋ฒ์ด๋ค. ๋ฐฐ์ด ๋ฆฌํฐ๋ด์ ๋๊ดํธ([ ])๋ฅผ ์ฌ์ฉํ๋ค. ๋ฐฐ์ด ๋ฆฌํฐ๋ด์์๋ ๊ฐ ์์์ ๊ฐ๋ง์ ํฌํจํ๋ค. ๋ฐฐ์ด์ ์์ ์์ฑ ๊ฐ์ฒด๊ฐ ๋์ ์ผ๋ก ํ๋กํผํฐ๋ฅผ ์ถ๊ฐํ ์ ์๋ฏ์ด, ๋ฐฐ์ด๋ ๋์ ์ผ๋ก ๋ฐฐ์ด ์์๋ฅผ ์ถ๊ฐํ ์ ์๋ค. ํนํ, ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐฐ์ด์ ๊ฒฝ์ฐ๋ ๊ฐ์ ์์ฐจ์ ์ผ๋ก ๋ฃ์ ํ์ ์์ด ์๋ฌด ์ธ๋ฑ์ค ์์น์๋ ๊ฐ์ ๋์ ์ผ๋ก ์ถ๊ฐํ ์ ์๋ค. ๋น ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ์์์ ์ ๊ทผํด๋ undefined ๊ฐ์ด ์ถ๋ ฅ๋๋ค. 3๊ฐ์ ์์ .. [์ธ์ฌ์ด๋ ์๋ฐ์คํฌ๋ฆฝํธ] ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐ์ดํฐ ํ์ ๊ณผ ์ฐ์ฐ์ 3 - ํ๋กํ ํ์ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ชจ๋ ๊ฐ์ฒด๋ ์์ ์ ๋ถ๋ชจ ์ญํ ์ ํ๋ ๊ฐ์ฒด์ ์ฐ๊ฒฐ๋์ด ์๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ๋ง์น ๊ฐ์ฒด์งํฅ์ ์์ ๊ฐ๋ ๊ณผ ๊ฐ์ด ๋ถ๋ชจ ๊ฐ์ฒด์ ํ๋กํผํฐ๋ฅผ ๋ง์น ์์ ์ ๊ฒ์ฒ๋ผ ์ธ ์ ์๋ ๊ฒ ๊ฐ์ ํน์ง์ด ์๋ค. ์๋ฐ์คํฌ๋ฆฝํธ์์๋ ์ด๋ฌํ ๋ถ๋ชจ ๊ฐ์ฒด๋ฅผ ํ๋กํ ํ์ ๊ฐ์ฒด(a.k.a ํ๋กํ ํ์ )๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์์ ์์ ์์ฑํ foo ๊ฐ์ฒด์๋ toString()์ด๋ผ๋ ๋ฉ์๋๊ฐ ์์ผ๋ฏ๋ก ์ค๋ฅ๊ฐ ๋ฐ์ํด์ผ ํ์ง๋ง, ์ ์์ ์ผ๋ก ๊ฒฐ๊ณผ๊ฐ ์ถ๋ ฅ๋์๋ค. ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์๊ณ ์์ ๊ฐ ์คํ๋ ์ ์๋ ์ด์ ๋ ๋ฐ๋ก foo ๊ฐ์ฒด์ ํ๋กํ ํ์ ์ toString() ๋ฉ์๋๊ฐ ์ด๋ฏธ ์ ์๋์ด ์๊ณ , foo ๊ฐ์ฒด๊ฐ ์์์ฒ๋ผ toString() ๋ฉ์๋๋ฅผ ํธ์ถํ๊ธฐ ๋๋ฌธ์ด๋ค. foo ๊ฐ์ฒด๋ฅผ ์ถ๋ ฅํ์ ๋ name, age ์ธ์ __proto__ ํ๋กํผํฐ๊ฐ ์๋ค๋.. [์ธ์ฌ์ด๋ ์๋ฐ์คํฌ๋ฆฝํธ] ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐ์ดํฐ ํ์ ๊ณผ ์ฐ์ฐ์ 2 - ์ฐธ์กฐ ํ์ ์ ํน์ฑ ์๋ฐ์คํฌ๋ฆฝํธ์์ ๊ธฐ๋ณธ ํ์ ์ ์ ์ธํ ๋ชจ๋ ๊ฐ์ ๊ฐ์ฒด์ด๋ค. ๋ฐฐ์ด์ด๋ ํจ์ ๋ํ ๊ฐ์ฒด๋ก ์ทจ๊ธ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฌํ ๊ฐ์ฒด๋ ์๋ฐ์คํฌ๋ฆฝํธ์์ ์ฐธ์กฐ ํ์ ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์ด๊ฒ์ ๊ฐ์ฒด์ ๋ชจ๋ ์ฐ์ฐ์ด ์ค์ ๊ฐ์ด ์๋ ์ฐธ์กฐ๊ฐ์ผ๋ก ์ฒ๋ฆฌ๋๊ธฐ ๋๋ฌธ์ด๋ค. objA ๊ฐ์ฒด๋ฅผ ๊ฐ์ฒด ๋ฆฌํฐ๋ด ๋ฐฉ์์ผ๋ก ์์ฑํ๋ค. ์ฌ๊ธฐ์ objA ๋ณ์๋ ๊ฐ์ฒด ์์ฒด๋ฅผ ์ ์ฅํ๊ณ ์๋ ๊ฒ์ด ์๋๋ผ ์์ฑ๋ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๋ ์ฐธ์กฐ๊ฐ์ ์ ์ฅํ๊ณ ์๋ค. ๋ณ์ objB์ objA ๊ฐ์ ํ ๋นํ๋ค. objA๋ 1๋ฒ์์ ์์ฑ๋ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๋ ์ฐธ์กฐ๊ฐ์ ๊ฐ์ง๊ณ ์์ผ๋ฏ๋ก ๋ณ์ objB์๋ ์ด๊ฐ์ ๊ฐ์ฒด์ ์ฐธ์กฐ๊ฐ์ด ์ ์ฅ๋๋ค. ๋ณ์ objB๊ฐ ๊ฐ๋ฆฌํค๋ ๊ฐ์ฒด์ val ๊ฐ์ 40์์ 50์ผ๋ก ๊ฐฑ์ ํ๋ค. ์ด ๋ objA๋ ๋ณ์ objB์ ๋์ผํ ๊ฐ์ฒด๋ฅผ ใ ๋ง์กฐํ๊ณ ์์ผ๋ฏ๋ก a.val ๊ฐ์ด 50.. ์ด์ 1 2 ๋ค์