JavaScript

JavaScript (ES6) - Prototype

Waitwait 2021. 5. 20. 06:16

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๊ธฐ๋ณธ ํƒ€์ž…์„ ์ œ์™ธํ•œ ๋ชจ๋“  ๊ฒƒ์„ ๊ฐ์ฒด๋กœ ๋ถ„๋ฅ˜ํ•œ๋‹ค.

์ฆ‰, 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 ๊ฐ™์€ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค