Class ๋ฌธ๋ฒ
๐ฉโ๐ ํด๋์ค ๋ฌธ๋ฒ์ด ๋ญ๊น?
Class๋ฌธ๋ฒ์ ์ค๋ธ์ ํธ๋ฅผ ์์ฑํด์ฃผ๋ ๊ธฐ๊ณ๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
๐โโ๏ธ ์๋ฅผ๋ค์ด) ๋ด๊ฐ ์ ๋ณด์ ๊ณต์ฌ์ดํธ๋ฅผ ๋ง๋ ๋ค๋ ๊ฐ์
์ค๋ฒ์์น์ ๋ฑ์ฅํ๋ ์์
๋ค์ ์ ๋ณด๋ฅผ ์ ๋ฆฌํด์ ๋ณด์ฌ์ฃผ๊ธฐ๋ก ํจ.
๐ ํ์ํ ๊ฒ
๐ฉโ๐ ์ฌ๊ธฐ์ ์๊ฐ ํ๋ ๊ฒ์ด, ์์
๋ค์ ์ ๋ณด์ ์ด๋ฏธ์ง๋ ๋ค ๋ค๋ฅด์ง๋ง ๋ฃ์ ๊ณต๊ฐ์ ๋ค ๋๊ฐ์ผ๋๊น, ์ด๋ป๊ฒ ๋ฌถ์ ์ ์์๊น? ๋๋ ๋์ค์ ์ ์์
์ด ์ถ๊ฐ๋๋ฉด ์ด๋ฏธ ๋ง๋ค์ด์ง ํ์ ์ ๋ณด๋ง ๋ฃ์ ์ ์์๊น ํ๊ณ ์๊ฐํด์ ๋์จ๊ฒ 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์ด๋ ์ ์ ์๋ฅผ ์ถ๊ฐํด์ ์กฐ์ํ๊ธฐ ๋๋ฌธ์ ์ถ๋ ฅ์ด ๋๋ ๊ฒ.
๐ ๋.