์๋ฐ์คํฌ๋ฆฝํธ๋ ๊ธฐ๋ณธ ํ์ ์ ์ ์ธํ ๋ชจ๋ ๊ฒ์ ๊ฐ์ฒด๋ก ๋ถ๋ฅํ๋ค.
์ฆ, number, string, boolean, null, undefined ์ ๊ฐ์ ๊ธฐ๋ณธ ํ์ ์ ์ ์ธํ ๋ชจ๋ ๊ฐ์ ๊ฐ์ฒด๋ค.
๋ฐ๋ผ์ ๋ฐฐ์ด, ํจ์, ์ ๊ท ํํ์ ๋ฑ๋ ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด๋ก ํํ๋ฉ๋๋ค!
์๋ฐ์คํฌ๋ฆฝํธ์ ๋ชจ๋ ๊ฐ์ฒด๋ ์์ ์ ๋ถ๋ชจ ์ญํ ์ ํ๋ ๊ฐ์ฒด์ ์ฐ๊ฒฐ๋์ด ์๋ค.
์ฆ, ๊ฐ์ฒด๋ ๊ฐ์ฒด์งํฅ์ ์์ ๊ฐ๋ ๊ณผ ๊ฐ์ด ๋ถ๋ชจ ๊ฐ์ฒด์ ํ๋กํผํฐ๋ฅผ ์์ ์ ํ๋กํผํฐ๋ก์จ ์ฌ์ฉํ ์ ์๋ค
๊ฐ์ฒด๊ฐ ์์ฑ์ด ๋๋ฉด์ ์๋์ ์ผ๋ก ๊ฐ์ง๊ฒ ๋๋ ๋ถ๋ชจ ๊ฐ์ฒด๋ฅผ ํ๋กํ ํ์ ๊ฐ์ฒด ( Prototype ) ๋ผ๊ณ ๋ถ๋ฅธ๋ค
์๋ฅผ ํตํด ์ดํด๋ณด์
Prototype
let song = {
name: 'song',
age: 25,
};
let choi = new Object();
choi.name = 'choi';
choi.age = 24;
let arr = [1, 2, 3, 4];
console.log(song.toString());
console.log(song);
console.log(choi);
console.log(arr);
1. ์ฐ์ ๊ฐ์ฒด ๋ฆฌํฐ๋ด ๋ฐฉ์์ผ๋ก song ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค
2. Object ์์ฑ์ ํจ์๋ฅผ ํตํด choi๋ผ๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ํ๋กํผํฐ๋ฅผ ์ถ๊ฐํด ์ค๋ค
3. arr ๋ผ๋ ๋ฐฐ์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค
4. song ๊ฐ์ฒด์ toString ๋ฉ์๋๋ฅผ ํธ์ถํด์ ์ถ๋ ฅํ๋ค
5. song, choi, arr๋ฅผ ์ถ๋ ฅํ๋ค
๊ฒฐ๊ณผ๋ฅผ ํ์ธํด๋ณด์
์ฐ์ song, choi, arr ๋ชจ๋ __proto__ ๋ผ๋ ํ๋กํผํฐ๋ฅผ ๊ฐ์ง ๊ฒ์ ํ์ธํ ์ ์๋ค
์ด๋ ์ด ์ ๋ชจ๋๊ฐ ๊ฐ์ฒด์ด๊ธฐ ๋๋ฌธ์ด๋ค
ECMAScript ๋ช ์ธ์์๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ชจ๋ ๊ฐ์ฒด๋ ์์ฑ์ด ๋๋ฉด์ ๋ถ๋ชจ์ธ prototype์ ๊ฐ๋ฆฌํค๋
[[Prototype]] ํ๋กํผํฐ๋ฅผ ๊ฐ์ง๋ค๊ณ ์ค๋ช ํ๋ค
์ด [Prototype]] ํ๋กํผํฐ๋ ํฌ๋กฌ ๋ธ๋ผ์ฐ์ ์์ __proto__ ํ๋กํผํฐ ํํ๋ก ๊ตฌํ๋์ด ์๋ค
๋ฐ๋ผ์ song ๊ฐ์ฒด๋ toString() ๋ฉ์๋๊ฐ ์์ผ๋ฏ๋ก ์๋ฌ๊ฐ ๋ฐ์ํ์ฌ์ผ ํ์ง๋ง, song ๊ฐ์ฒด์ ํ๋กํ ํ์ ์
toSring() ๋ฉ์๋๊ฐ ์ด๋ฏธ ์ ์๋์ด ์๊ณ song ๊ฐ์ฒด๊ฐ ์์ํ ๊ฒ์ฒ๋ผ toString ๋ฉ์๋๋ฅผ ํธ์ถํ๊ธฐ ๋๋ฌธ์ด๋ค
song ๊ฐ์ฒด ๋ด๋ถ์ __proto__ ํ๋กํผํฐ ์์ toString ๋ฉ์๋๊ฐ ์กด์ฌํ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค
์ถ๊ฐ๋ก arr๋ ๋ฐฐ์ด์ด๋ฉด์ ๊ฐ์ฒด์ด๊ธฐ ๋๋ฌธ์ Array prototype ์ ๊ฐ๋๋ค
๊ทธ๋ฌ๋ฏ๋ก map, filter ๊ฐ์ ๋ฉ์๋๋ฅผ ํธ์ถํ ์ ์๋ ๊ฒ์ด๋ค
'JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JavaScript (ES6) - ์๋ฒ ํต์ ์ ์์ JSON (0) | 2021.05.23 |
---|---|
JavaScript (ES6) - Array APIs ์ด์ ๋ฆฌ - ( ์ ์ฉํ 10๊ฐ์ง ๋ฐฐ์ด ํจ์ ) (0) | 2021.05.23 |
JavaScript (ES6) - Array ๊ฐ๋ ๊ณผ APIs (0) | 2021.05.01 |
JavaScript (ES6) - Object (0) | 2021.05.01 |
JavaScript (ES6) - class ์ object ๊ฐ์ฒด์งํฅํ๋ก๊ทธ๋๋ฐ (0) | 2021.05.01 |