-
[JS 100์ ] ๋ฌธ์ 12 - ๊ฒ์ ์บ๋ฆญํฐ ํด๋์ค ๋ง๋ค๊ธฐ๐ develop/CodingTest 2022. 10. 19. 21:03
๋ฌธ์
๋ค์ ์์ค์ฝ๋์์ ํด๋์ค๋ฅผ ์์ฑํ์ฌ ๊ฒ์ ์บ๋ฆญํฐ์ ๋ฅ๋ ฅ์น์ 'ํ์ด์ด๋ณผ'์ด ์ถ๋ ฅ๋๊ฒ ๋ง๋์์ค. ์ฃผ์ด์ง ์์ค ์ฝ๋๋ฅผ ์์ ํด์ ์๋ฉ๋๋ค.
๋ฐ์ดํฐ <์ฌ๊ธฐ์ class๋ฅผ ์์ฑํ์ธ์.> const x = new Wizard(545, 210, 10); console.log(x.health, x.mana, x.armor); x.attack(); ์ถ๋ ฅ 545 210 10 ํ์ด์ด๋ณผ
๋์ ํ์ด
class Wizard { constructor(a, b, c) { this.health = a; this.mana = b; this.armor = c; } attack() { console.log("ํ์ด์ด๋ณผ"); } } const x = new Wizard(545, 210, 10); console.log(x.health, x.mana, x.armor); x.attack(); // ์ถ๋ ฅ 545 210 10 ํ์ด์ด๋ณผ
- class ์ ์ธ์์ ์ด์ฉํ์ฌ Wizard ๋ผ๋ class ๋ฅผ ์ ์ํด์ฃผ์๋ค.
- constructor ํ๋ผ๋ฏธํฐ๋ก a, b, c ๋ฅผ ์ฃผ์ด ์ธ๊ฐ์ ๊ฐ์ ๋ฐ์ ์ ์๊ฒ ํ์๋ค.
- this.health = a; ์ ๊ฐ์ด ๊ฐ์ ์ง์ ํด์ฃผ์๋ค.
- attack ํจ์๋ ํด๋์ค ๋ด๋ถ์ ์ ์ํ์ฌ ์ถ๋ ฅ์ ๋ง๊ฒ ์์ฑํ์๋ค.
์ ๋ต
const Wizard = class Wizard { constructor (health, mana, armor){ this.health = health; this.mana = mana; this.armor = armor; } attack(){ console.log('ํ์ด์ด๋ณผ'); } } const x = new Wizard(545, 210, 10); console.log(x.health, x.mana, x.armor); x.attack();
๋ต์์ ํํ์์ผ๋ก class๋ฅผ ์ ์ธํด์ฃผ์๊ณ , ํ๋ผ๋ฏธํฐ ๊ฐ์ ์ด๋ฆ๋ ๋์ผํ๊ฒ ์ง์ ํด ์ค ๊ฒ์ ํ์ธํ ์ ์์๋ค. ์ฐจํ์ class ๋ฅผ ์ ์ธํ๊ฒ ๋๋ฉด ํํ์์ผ๋ก ์ ์ํด๋๋ ๊ฒ์ด ์ฌ์ฌ์ฉ์ฑ์ ์ฉ์ดํ ์ ์์ผ๋,, ๋ค์๋ถํด ๋ฌธ์ ๋ผ๋ ๊ทธ๋ ๊ฒ ํ์ด๋ณด์ ์๊ฐํ๋ค.
JS ๊ฐ๋จ ๋ณต์ต
JavaScript Class ์ ๋ํด์
Class
class๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ์ํ ํ ํ๋ฆฟ์ด๋ค. class๋ ๋ฐ์ดํฐ์ ์ด๋ฅผ ์กฐ์ํ๋ ์ฝ๋๋ฅผ ํ๋๋ก ์ถ์ํํ๋ ์ญํ ์ ํ๋ค.
Class ๋ฌธ๋ฒ
class ๋ฌธ๋ฒ์ class ์ ์ธ๊ณผ class ํํ์ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ค.
Class ์ ์ธ
ํด๋์ค์ ์ด๋ฆ(์์ ์์ Rectangle)๊ณผ ํจ๊ป class ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ธํ๋ค. class ๋ด๋ถ์ constructor ๋ ํ๋ฒ๋ง ์ฌ์ฉํ ์ ์๋ค. ์ด์ ๋ constructor ๊ฐ ์์ฑ์ ๊ทธ ์์ฒด๋ฅผ ๊ฐ๋ฆฌํค๊ธฐ ๋๋ฌธ์ด๋ค. ์ฆ, ์๋์ ์์๋ก ๋ณด๋ฉด constructor ๋์ Rectangle์ ์ฌ์ฉํ ์๋ ์๋ค.
class Rectangle { constructor(height, width) { this.height = height; this.width = width; } }
Class ํํ์
๋ณ์๋ฅผ ์ ์ธํ๊ณ , ๊ทธ ๋ณ์์ class๋ฅผ ๋ฃ์ด์ฃผ๋ ๊ฒ์ class ํํ์์ด๋ผ๊ณ ํ๋ค. ์ด๋ class๋ฅผ ์ ์ํ๋ ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ด๋ค.
class ํํ์์ ์ด๋ฆ์ ๊ฐ์ง ์๋ ์๊ณ , ๊ฐ์ง ์์ ์๋ ์๋ค. ์ด๋ฆ์ ๊ฐ์ง class ํํ์์ ์ด๋ฆ์ ํด๋์ค body์ local scope์ ํํด ์ ํจํ๋ค.
// unnamed let Rectangle = class { constructor(height, width) { this.height = height; this.width = width; } }; console.log(Rectangle.name); // ์ถ๋ ฅ: "Rectangle" // named let Rectangle = class Rectangle2 { constructor(height, width) { this.height = height; this.width = width; } }; console.log(Rectangle.name); // ์ถ๋ ฅ: "Rectangle2"
์ถ๊ฐ์ ์ผ๋ก, ํจ์ ์ ์ธ๊ณผ ํด๋์ค ์ ์ธ์ ์ฐจ์ด๋ ๋ฐ๋ก ํธ์ด์คํ ์ด๋ค.
ํจ์๋ ์ ์ํ๊ธฐ ํ๊ธฐ ์ ์ ํธ์ถํ ์ ์์ง๋ง, ํด๋์ค๋ ์ ์ํ๊ธฐ ์ ์ ํธ์ถํ ์ ์๋ค. ์ฆ ๋ฐ๋์ ์ ์ ํ์ ํธ์ถํ ์ ์๋ ๊ฒ์ด๋ค.
'๐ develop > CodingTest' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JS 100์ ] ๋ฌธ์ 14 - 3์ ๋ฐฐ์ ์ธ๊ฐ์? (0) 2022.10.20 [JS 100์ ] ๋ฌธ์ 13 - ๋ช๋ฒ์งธ ํ์ฑ์ธ๊ฐ์? (0) 2022.10.20 [JS 100์ ] ๋ฌธ์ 11 - for๋ฅผ ์ด์ฉํ ๊ธฐ๋ณธ ํ์ฉ (0) 2022.10.19 [JS 100์ ] ๋ฌธ์ 10 - ๋ณ ์ฐ๊ธฐ (0) 2022.10.18 [JS 100์ ] ๋ฌธ์ 9 - concat์ ํ์ฉํ ์ถ๋ ฅ ๋ฐฉ๋ฒ (0) 2022.09.28