[ES6] Class & ProtoType

JIOOยท2021๋…„ 10์›” 8์ผ

ES6

๋ชฉ๋ก ๋ณด๊ธฐ
2/17

Class ๋ฌธ๋ฒ•

๐Ÿ‘ฉโ€๐ŸŽ“ ํด๋ž˜์Šค ๋ฌธ๋ฒ•์ด ๋ญ˜๊นŒ?
Class๋ฌธ๋ฒ•์€ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•ด์ฃผ๋Š” ๊ธฐ๊ณ„๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

๐Ÿ™Žโ€โ™‚๏ธ ์˜ˆ๋ฅผ๋“ค์–ด) ๋‚ด๊ฐ€ ์ •๋ณด์ œ๊ณต์‚ฌ์ดํŠธ๋ฅผ ๋งŒ๋“ ๋‹ค๋Š” ๊ฐ€์ •
์˜ค๋ฒ„์›Œ์น˜์— ๋“ฑ์žฅํ•˜๋Š” ์˜์›…๋“ค์˜ ์ •๋ณด๋ฅผ ์ •๋ฆฌํ•ด์„œ ๋ณด์—ฌ์ฃผ๊ธฐ๋กœ ํ•จ.

๐Ÿ“– ํ•„์š”ํ•œ ๊ฒƒ

  1. ์˜์›…๋“ค์˜ ์ •๋ณด
  2. ์˜์›…๋“ค์˜ ์ด๋ฏธ์ง€
  3. ์ •๋ณด์™€ ์ด๋ฏธ์ง€๋ฅผ ๋„ฃ์„ ๊ณต๊ฐ„

๐Ÿ‘ฉโ€๐ŸŽ“ ์—ฌ๊ธฐ์„œ ์ƒ๊ฐ ํ•˜๋Š” ๊ฒƒ์ด, ์˜์›…๋“ค์˜ ์ •๋ณด์™€ ์ด๋ฏธ์ง€๋Š” ๋‹ค ๋‹ค๋ฅด์ง€๋งŒ ๋„ฃ์„ ๊ณต๊ฐ„์€ ๋‹ค ๋˜‘๊ฐ™์œผ๋‹ˆ๊นŒ, ์–ด๋–ป๊ฒŒ ๋ฌถ์„ ์ˆœ ์—†์„๊นŒ? ๋˜๋Š” ๋‚˜์ค‘์— ์ƒˆ ์˜์›…์ด ์ถ”๊ฐ€๋˜๋ฉด ์ด๋ฏธ ๋งŒ๋“ค์–ด์ง„ ํ‹€์— ์ •๋ณด๋งŒ ๋„ฃ์„ ์ˆœ ์—†์„๊นŒ ํ•˜๊ณ  ์ƒ๊ฐํ•ด์„œ ๋‚˜์˜จ๊ฒŒ Class๋ฌธ๋ฒ•

๐Ÿ“ Class๋ฌธ๋ฒ• ์˜ˆ์‹œ

function ๊ธฐ๊ณ„(skill){
 this.Shift = skill[0]
 this.E = skill[1]
 this.Q = skill[2]
}

var ๊ฒ์ง€ = new ๊ธฐ๊ณ„(["์งˆํ’์ฐธ","ํŠ•๊ฒจ๋‚ด๊ธฐ","์šฉ๊ฒ€"])

// ์„ค๋ช… ๋ณ„๊ฑฐ์—†๋‹ค ํ•จ์ˆ˜์‹คํ–‰ํ•˜๊ณ  ํŒŒ๋ผ๋ฏธํ„ฐ ๋„ฃ๊ณ  new๋ฅผ ์“ฐ๋ฉด class๋ฌธ๋ฒ• ์„ฑ๊ณต
// ์ด์ œ ์ด๊ฑธ ์›ํ•˜๋Š” ๋ณ€์ˆ˜์— ๋„ฃ์œผ๋ฉด ๋จ.

์ด๋ ‡๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ง  ํ›„ ๊ฒ์ง€๋ฅผ console๋กœ ์ฐ์–ด๋ณด๋ฉด

๊ฒ์ง€ {Shift : "์งˆํ’์ฐธ",E : "ํŠ•๊ฒจ๋‚ด๊ธฐ", Q : "์šฉ๊ฒ€"}

์ด๋ ‡๊ฒŒ ๋‚˜์˜จ๋‹ค.

๐Ÿ‘ฉโ€๐ŸŽ“ ์œ„์˜ ๋ฐฉ์‹์€ES5๊นŒ์ง€์˜ ๋ฐฉ์‹์ด๊ณ  ES6๋ถ€ํ„ฐ๋Š” constructor์„ ์‚ฌ์šฉ

Class Hero{
 constructor(skill){
  this.Shift = skill[0]
  this.E = skill[1]
  this.Q = skill[2]
  }
}

var ๊ฒ์ง€ = new Hero(["์งˆํ’์ฐธ","ํŠ•๊ฒจ๋‚ด๊ธฐ","์šฉ๊ฒ€"])

constructor์„ ์“ฐ๋Š” ์ด์œ ๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ฐ›๊ธฐ ์œ„ํ•จ

Class๋ฅผ ๋ฐฐ์› ์œผ๋ฉด ๊ผญ ์•Œ์•„์•ผํ•˜๋Š” ProtoType

์ด๋ ‡๊ฒŒ Class๋ฅผ ํ†ตํ•ด์„œ ๋งŒ๋“ค์–ด์ง€๋Š” ๋ณ€์ˆ˜๋“ค์€ Class์—์„œ ํƒœ์–ด๋‚ฌ๋‹ค๊ณ  ํ•ด์„œ Prototype ์ด๋ผ๋Š” ์œ ์ „์ž๋ฅผ ๊ฐ€์ง€๊ณ  ํƒœ์–ด๋‚จ.

๐Ÿ‘ฉโ€๐ŸŽ“ ๊ทธ๋ ‡๋‹ค๋ฉด Class์— ์ƒˆ๋กœ์šด ์ •๋ณด๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ?

Hero.prototype.name = "๊ฒ์ง€"

์œ„์—์„œ prototype์ด ์œ ์ „์ž๋ผ๊ณ  ๋งํ–ˆ๋‹ค๋ฉด ๋ถ€๋ชจ๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๋˜ ์œ ์ „์ž์— ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ์œ ์ „์ž์กฐ์ž‘ ๊ฐ™์€๊ฑฐ๋‹ค.

์ด์ œ ์ฝ˜์†”์—์„œ ๊ฒ์ง€.name์„ ์ฐ์–ด์ฃผ๋ฉด "๊ฒ์ง€"๊ฐ€ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.


๐Ÿ‘ฉโ€๐ŸŽ“ ๊ทผ๋ฐ ์ด์ƒํ•˜๊ฒŒ ์ฝ˜์†”๋กœ ๊ฒ์ง€๋ฅผ ์ฐ์œผ๋ฉด name์ด ๋‚˜์˜ค์ง€ ์•Š๋Š”๋‹ค ์ด๊ฒŒ ๋ฌด์Šจ์ผ์ธ๊ฐ€?

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” object๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ ๊ฐ€์ ธ์˜ฌ ํƒ€๊ฒŸ์—์„œ name์ด ์—†๋‹ค๊ณ  ํ•˜๋ฉด ๊ทธ ๋ถ€๋ชจ์—๊ฒŒ์„œ name์„ ์ฐพ์Œ ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๊ฐ€ ์œ„์—์„œ name์ด๋ž€ ์œ ์ „์ž๋ฅผ ์ถ”๊ฐ€ํ•ด์„œ ์กฐ์ž‘ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ถœ๋ ฅ์ด ๋˜๋Š” ๊ฒƒ.


๐Ÿ‘ ๋.

profile
ํ”„๋ก ํŠธ์—”๋“œ๊ฐ€ ์ข‹์€ ์›น์Ÿ์ด with Notion (์š”์ฆ˜์€ ๋…ธ์…˜๊ณผ ๋ณ‘ํ–‰ ์ค‘)

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