๋ฌธ์์ด, ์ซ์, ๋ถ๋ฆฌ์ธ ๊ฐ์ ๋ํด ๊ฐ์ฒด์ฒ๋ผ ์ ๊ทผํ๋ฉด ์์ฑ๋๋ ์์ ๊ฐ์ฒด๋ฅผ ๋ํผ๊ฐ์ฒด(wrapper object)๋ผ ํ๋ค.
๐ก ์์๊ฐ์ธ ๋ฌธ์์ด, ์ซ์, ๋ถ๋ฆฌ์ธ ๊ฐ์ ๊ฒฝ์ฐ ์ด๋ค ์์๊ฐ์ ๋ํด ๋ง์น ๊ฐ์ฒด์ฒ๋ผ ๋ง์นจํ ํ๊ธฐ๋ฒ(๋๋ ๋๊ดํธ ํ๊ธฐ๋ฒ)์ผ๋ก ์ ๊ทผํ๋ฉด ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด ์ผ์์ ์ผ๋ก ์์๊ฐ์ ์ฐ๊ด๋ ๊ฐ์ฒด๋ก ๋ณํํด ์ค๋ค.
๐ก ์ฐ๊ด๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ ์์ฑ๋ ๊ฐ์ฒด๋ก ํ๋กํผํฐ์ ์ ๊ทผํ๊ฑฐ๋ ๋ฉ์๋๋ฅผ ํธ์ถํ๊ณ ๋ค์ ์์๊ฐ์ผ๋ก ๋๋๋ฆฐ๋ค.
๐พ# ๋ฌธ์์ด ๋ํผ๊ฐ์ฒด๋ก ๋ณํ
const str = 'hi';
console.log(str.length); // 2
console.log(str.toUpperCase()); // HI
๐๐ป ๋ฌธ์์ด ๋ํผ ๊ฐ์ฒด์ธ String ์์ฑ์ ํจ์์ ์ธ์คํด์ค String.prototype์ ๋ฉ์๋๋ฅผ ์์๋ฐ์ ์ฌ์ฉํ ์ ์์!
๐พ# ์์๊ฐ ๋ฌธ์์ด๋ก ๋ณํ
const str = 'hi';
console.log(str.length); // 2
console.log(typeof str); // string
๐๐ป ๋ํผ ๊ฐ์ฒด๋ก ํ๋กํผํฐ์ ์ ๊ทผํ๊ฑฐ๋ ๋ฉ์๋ ํธ์ถ ํ, ๋ค์ ์์๊ฐ์ผ๋ก ๋๋๋ฆฐ๋ค!!
๐๐ป ์ด๋ ๋ํผ ๊ฐ์ฒด๋ ๊ฐ๋น์ง ์ปฌ๋ ์
์ ๋์์ด ๋๋ค.
๐พ# ๋ํผ ๊ฐ์ฒด์ ๋์ ์ผ๋ก ํ๋กํผํฐ ์ถ๊ฐ
const str = 'hi';
str.name = 'zooyaho'; // error ์๋จ 1๏ธโฃ
console.log(str.name); // undefined 2๏ธโฃ
๐๐ป 1๏ธโฃ ๋ํผ ๊ฐ์ฒด์ ๋์ ์ผ๋ก ํ๋กํผํฐ ์ถ๊ฐ ํ ์๋ณ์ str์ ๋ค์ ์๋์ ์์๊ฐ ๋ฌธ์์ด๋ก ๋์์จ๋ค.
๐๐ป 1๏ธโฃ์์ ์์ฑ๋ ๋ํผ ๊ฐ์ฒด๋ ์๋ฌด๋ ์ฐธ์กฐํ์ง ์์ผ๋ฏ๋ก ๊ฐ๋น์ง ์ปฌ๋ ์
์ ๋์์ด ๋๋ค.
๐๐ป 2๏ธโฃ ์๋ก์ด ๋ํผ๊ฐ์ฒด๊ฐ ์๋ฌต์ ์ผ๋ก ์์ฑ๋๊ณ ๊ฐ๋ฆฌํค๋ฏ๋ก undefined๋ฅผ ๋ฐํํ๋ค!
[์ฐธ๊ณ ] ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ Deep Dive