๐ŸŽ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ (10) __proto__ ๋ฅผ ๋Œ€์ฒดํ•˜๋Š” Object.create()

๐Ÿ‘ปObject.create()

์ด์ „ ๊ธ€ ์ฐธ์กฐ.

https://dev-seolleung2.netlify.app/development/OOP-part9/

__proto__ ๋ฅผ ๋Œ€์ฒดํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—๊ฒŒ ํ”ผ์นด์ธ„๋ฅผ ๋ถ€๋ชจ๋กœ ํ•˜๋Š” ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๋ผ ๋ช…๋ นํ•  ๋•Œ ์“ด๋‹ค.

let pikachu = {
  attack: 90,
  defence: 50,
  skillOne: 'toSlapYourFace',
  skillTwo: 'lightning shock',
}
let raichu = Object.create(pikachu)
raichu
// {} ๋น„์–ด์žˆ๋‹ค. ํ•˜์ง€๋งŒ __proto__ ๊ฐ€ ์ถœ๋™ํ•œ๋‹ค๋ฉด ์–ด๋–จ๊นŒ?
__proto__: attack: 90
defence: 50
skillOne: 'toSlapYourFace'
skillTwo: 'lightning shock'
__proto__: Object

Object.create() ์˜ ์ธ์ž์— ๋ถ€๋ชจ ๊ฐ์ฒด๋ฅผ ํƒœ์›Œ์„œ ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ, ๊ทธ ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋Š” pikachu ๋ฅผ ๋ถ€๋ชจ๋กœ ํ•˜๋Š” ์ƒˆ๋กœ์šด ๊ฐ์ฒด ์ด๋‹ค.

๊ทธ๋ž˜์„œ raichu ๊ฐ€ ๋งŒ๋“ค์–ด ์กŒ๋Š”๋ฐ ์•„๋ฌด๊ฒƒ๋„ ์—†๋Š” ํ……ํ…… ๋นˆ ๊ฐ์ฒด ๊ฐ™๋‹ค.

ํ•˜์ง€๋งŒ raichu.__proto__ ๋Š” ์œ„์—์„œ ๋ณด๋“ฏ์ด ์ •ํ™•ํžˆ pikachu ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋‹ค.

โšก๏ธ๋ผ์ด์ธ„์—๊ฒŒ ๋‹ค๋ฅธ ์†์„ฑ ๋„ฃ์–ด์ฃผ๊ธฐ

raichu.cuteness = 100
100
raichu.specialSkill = 'jungwangsukhwa'
;('jungwangsukhwa')
raichu.canEvolve = true
true

์ด์ œ ๋ผ์ด์ธ„๋Š” ๊ท€์—ฌ์›€, ํŠน์ˆ˜์Šคํ‚ฌ, ์ง„ํ™”๊ฐ€๋Šฅ์—ฌ๋ถ€ ์˜ ์†์„ฑ์„ ์–ป์—ˆ๋‹ค.

raichu
{cuteness: 100, specialSkill: "jungwangsukhwa", canEvolve: true}
canEvolve: true
cuteness: 100
specialSkill: "jungwangsukhwa"
__proto__:
attack: 90
defence: 50
skillOne: "toSlapYourFace"
skillTwo: "lightning shock"
__proto__: Object

๋ผ์ด์ธ„๋Š” ํ”ผ์นด์ธ„๋ฅผ ๋ถ€๋ชจ๋กœ ํ•˜๋Š” ์ƒˆ๋กœ์šด ๊ฐ์ฒด๊ฐ€ ๋œ๋‹ค.

์ „ ๊ธ€์— ์ด์–ด ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ผ์ด์ธ„ ๊ณต๊ฒฉ๋ ฅ์„ ๋‘ ๋ฐฐ๋กœ ๋ปฅํŠ€๊ธฐ ํ–ˆ๋‹ค.

raichu.attack = 180
180
pikachu.attack
90 // ๋ถ€๋ชจ ์†์„ฑ์€ ๊ทธ๋Œ€๋กœ ์ด๋‹ค.

์ด์ฒ˜๋Ÿผ __proto__ ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ๋ณด๋‹ค Object.create() ๋ฅผ ํ†ตํ•ด ๊ฐ์ฒด์™€ ๊ฐ์ฒด๊ฐ„์˜ ์ƒ์†๊ด€๊ณ„, ํ”„๋กœํ†  ๋งํฌ๋ฅผ ์ง€์ •ํ•ด ์ฃผ๋Š” ๊ฒƒ์ด ๋” ์ข‹๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ,

raichu.__proto__
{attack: 90, defence: 50, skillOne: "toSlapYourFace", skillTwo: "lightning shock"}
raichu.__proto__ === pikachu
true

Written by@[DotoriMook]
ํ”„๋ก ํŠธ์—”๋“œ ์ฃผ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž ๋„ํ† ๋ฆฌ๋ฌต์˜ ๊ธฐ์ˆ ๊ฐœ๋ฐœ ๋ธ”๋กœ๊ทธ ์ž…๋‹ˆ๋‹ค.

GitHubMediumTwitterFacebook