[๐Ÿ’ป ์ฝ”๋“œ์Šคํ…Œ์ด์ธ  FE 44๊ธฐ][part 4] ํ”„๋กœํ† ํƒ€์ž… ์ฒด์ธ

JiEunยท2023๋…„ 3์›” 16์ผ
0

โœ”๏ธ ์‹œ์ž‘

ํ”„๋กœํ† ์ฒด์ธ์ด ๋ฌด์—‡์ธ์ง€, .prototype ,__proto__ ํ‚ค์›Œ๋“œ์— ๋Œ€ํ•ด ํ•™์Šต ํ–ˆ๋‹ค.


ํ”„๋กœํ† ํƒ€์ž… ์ฒด์ธ์„ ์•Œ๊ธฐ์ „ ํ”„๋กœํ† ํƒ€์ž…์ด ๋ฌด์—‡์ธ๊ฐ€์— ๋Œ€ํ•ด ์งš๊ณ  ๋„˜์–ด๊ฐ€์•ผํ•œ๋‹ค.

ํ”„๋กœํ† ํƒ€์ž…์ด๋ž€ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งํ•˜์ž๋ฉด
ํ”„๋กœํ† ํƒ€์ž… = ์›ํ˜•๊ฐ์ฒด(original form) = ๋ถ€๋ชจ ๊ฐ์ฒด ์œ ์ „์ž

๋ถ€๋ชจ ์œ ์ „์ž ๊ธฐ๋ก(์†์„ฑ, ๋ฉ”์„œ๋“œ)์„ ๊ฐ€์ ธ๋‹ค ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ“ ํ”„๋กœํ† ํƒ€์ž… ์ฒด์ธ

์ƒ์œ„ ํ”„๋กœํ† ํƒ€์ž… ๊ฐ์ฒด๋กœ ๋ถ€ํ„ฐ ๋ฉ”์„œ๋“œ์™€ ์†์„ฑ์„ ์ƒ์† ๋ฐ›๋Š”๋‹ค. ๊ทธ ์ƒ์œ„ ํ”„๋กœํ† ํƒ€์ž… ๊ฐ์ฒด๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋‹ค. (๋ถ€๋ชจ ์œ ์ „์ž ์ƒ์†)

prototype ์™€__proto__

prototype, __proto__ ์˜ ๊ณตํ†ต์ ์€ ๋‘˜ ๋‹ค prototype์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค.

function person(){}

persen ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑํ•  ๊ฒฝ์šฐ
person๊ณผ person's prototype์ด ์ƒ์„ฑ๋œ๋‹ค.
person์€ ์ž๋™์œผ๋กœ prototype์„ ์ƒ์„ฑ ๋˜๋ฉฐ
person's prototype์„ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋œ๋‹ค.

let kim = new person();

์—ฌ๊ธฐ์„œ ์ธ์Šคํ„ด์Šค ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๊ฒฝ์šฐ
kim์— ์ž๋™์œผ๋กœ __proto__๊ฐ€ ์ƒ์„ฑ๋˜๋ฉฐ ์ด ๋˜ํ•œ person's prototype์„ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋œ๋‹ค.

- .prototype (์ƒ์„ฑ์ž์˜ ์†์„ฑ)

๋ถ€๋ชจ ๊ฐ์ฒด์˜ ์†์„ฑ์œผ๋กœ prototype์˜ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค.

- .__proto__ (๊ฐœ๋ณ„ ๊ฐ์ฒด์˜ ์†์„ฑ)

์ธ์Šคํ„ด์Šค ๊ฐ์ฒด(์ž์‹ ๊ฐ์ฒด)์˜ ์†์„ฑ์œผ๋กœ ๋ถ€๋ชจ์˜ prototype์˜ ๊ฐ์ฒด๋ฅผ ๋‚˜ํƒ€ ๋‚ธ๋‹ค.

๐Ÿ“ ์ƒ์† ๊ตฌํ˜„ ๋ฐฉ๋ฒ•

- ์ž์‹ ํด๋ž˜์Šค extends ๋ถ€๋ชจ ํด๋ž˜์Šค {...}

๋ถ€๋ชจ ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์€ ์ž์‹ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

- super

๋ถ€๋ชจ ๊ฐ์ฒด์˜ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.(๋ถ€๋ชจ๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ๊ฐ€์ ธ์˜ด)

  • super() : ()๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ๋ถ€๋ชจ ํด๋ž˜์Šค ์ƒ์„ฑ์ž๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.
  • super. : .๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ๋ถ€๋ชจ ํด๋ž™์Šค ๊ฐ์ฒด๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.
class ๋ถ€๋ชจ ํด๋ž˜์Šค{
	constructor(color, food){
      this.color = "red";
      this.fodd = "apple";
    }
}

์ž์‹ ํด๋ž˜์Šค extends ๋ถ€๋ชจ ํด๋ž˜์Šค{
	constructor(name, color, food){
      super(color, food); // ๋ถ€๋ชจ ํด๋ž˜์Šค ์ƒ์†
      this.name = "jieun";
      /*
      ๋ถ€๋ชจ ์†์„ฑ์ด ์ž๋™์œผ๋กœ ์ƒ์†๋œ๋‹ค.
      this.color = "red";
      this.fodd = "apple";
      */
    }
}
  • ์ž์‹ ํด๋ž˜์Šค์— super๋กœ ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ์†์„ฑ๋“ค์„ ์ถ”๊ฐ€ํ•  ๊ฒฝ์šฐ
    ๋”ฐ๋กœ ์„ ์–ธํ•˜์ง€ ์•Š์•„๋„ ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ์†์„ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

โœ๏ธ ๋งˆ์น˜๋ฉฐ

ํ”„๋กœํ† ํƒ€์ž… ์ฒด์ธ์ด ๋ฌด์—‡์ด๊ณ  .prototype์™€ ,__proto__์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

.prototype์™€ __proto__ ์€ ์„œ๋กœ ๊ณตํ†ต์ ์€ ์žˆ์ง€๋งŒ
๋ถ€๋ชจ, ์ž์‹์˜ ์†์„ฑ์ด๋ผ๋Š” ์ฐจ์ด์ ์ด ์žˆ๋Š” ๊ฑฐ ๊ฐ™๋‹ค.

๊ณต๋ถ€ํ•  ๋•Œ ์ฐธ๊ณ ํ•˜๊ธฐ ์ข‹์€ ์˜์ƒ
๐Ÿ”— https://youtu.be/wT1Bl5uV27Y

profile
๐Ÿ’ป ํ”„๋ก ํŠธ์—”๋“œ๋ฅผ ๋ชฉํ‘œ๋กœ ์„ฑ์žฅ ์ค‘! (์•Œ์•„๋ดค๋˜ ๋‚ด์šฉ ๋“ฑ์„ ์ •๋ฆฌํ•˜๊ธฐ)

0๊ฐœ์˜ ๋Œ“๊ธ€