๐ ๋ชฉํ: ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ์ด๋ฅผ ๊ณต๋ถํ๊ณ ๋ถ์กฑํ ๋ถ๋ถ์ ์ฑ์ฐ์.
๐ ํด๋์ค๋ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ํต์ฌ์ด๋ค.
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ด๋, ํ๋ก๊ทธ๋จ์ ๊ฐ์ฒด๋ค๋ก ๊ตฌ์ฑํ๊ณ , ๊ฐ์ฒด๋ค ๊ฐ ์๋ก ์ํธ ์์ฉ ํ๋๋ก ์์ฑํ๋ ๋ฐฉ๋ฒ์ด๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๋ ๊ฐ์ฒด์งํฅ ์ค์ฌ์ ์ธ์ด๋ ์๋๋ค.
๊ทธ๋ฌ๋ ์ฐ๋ฆฌ ํ๋ก๊ทธ๋๋ฐ์ ์์ด์ Class, ๊ฐ์ฒด, ๊ฐ์ฒด์งํฅ์ ํญ์ ์ค์ํ ์ฃผ์ ์ด๋ค. ์ด๊ฒ์ ์ดํดํ๋ ๊ฒ์ด ์ค์ํ๋ค๊ณ ์๊ฐํ๋ค.
'๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ' ์ด๋ผ๋ ๊ฒ์ ๋จ์ํ { num: 1}
์ ๋งํ๋ ๊ฒ์ด ์๋๋ค.
๊ฐ์ฒด๋ ์์ด๋ก Object, ์ด๋ฆ ๊ทธ๋๋ก ์ฌ๋ฌผ์ ๋ปํ๋ค.
ํ์ง๋ง Class๋ ๊ฒฐ๊ตญ { num: 1}
์ ๊ฐ์ด ์๊ธด ๊ฐ์ฒด๋ฅผ ์ ์ค๊ณํ๊ธฐ ์ํ ํ์ ๋ง๋ค. ํ
ํ๋ฆฟ์ด๋ผ๊ณ ๋ณด๋ฉด ๋๋ค.
๊ทธ๋ฐ๋ฐ ์ด ๋ ๊ฐ์ฒด๋ ํน์ ๋ก์ง์ ๊ฐ๊ณ ์๋ ํ๋(method)๊ณผ ๋ณ๊ฒฝ ๊ฐ๋ฅํ ์ํ(๋ฉค๋ฒ ๋ณ์)๋ฅผ ๊ฐ์ง๋ค.
์ํ๋ ๊ตฌ์กฐ์ ๊ฐ์ฒด ํ์ ์ง๊ณ , ๋น์ทํ ๋ชจ์์ ๊ฐ์ฒด๋ฅผ ์ฌ๋ฌ๊ฐ์ง ์ฐ์ด๋ผ ์ ์๋ค.
๊ฐ์ฒด๋ฅผ ๋งค๋ฒ ๋ง๋ค์ด์ ์ฌ์ฉํด๋ ๊ด์ฐฎ์ง๋ง, ๊ท๋ชจ๊ฐ ์ปค์ง๋ค๋ฉด Class๋ผ๋ ์ค๊ณ๋๋ฅผ ํตํด ๋ง๋ค ์ ์๋ค.
์ ์ดํดํ๊ณ ๋์ด๊ฐ์!
๊ฐ์ฒด์ ์ค๊ณ๋์ธ ํด๋์ค๋ ๋ฌธ๋ฒ์ด ๋น์ทํ๋ค.
๋์ ๊ฐ์ฅ ํฐ ์ฐจ์ด๋ constructor๋ผ๋ ์์ฑ์ ํจ์์ด๋ค.
const morning = new Car('Morning', 2000000);
์ด๋ฐ์์ผ๋ก class๋ก ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ณผ์ ์ '์ธ์คํด์คํ'๋ผ๊ณ ํ๋ค.
class๋ ์๋ก์ด instance๋ฅผ ์์ฑํ ๋๋ง๋ค constructor()
ํจ์๋ฅผ ํธ์ถํ๋ค.
class Car {
constructor(name, price) {
this.name = name;
this.price = price;
}
}
this
ํค์๋๋ฅผ ์ฌ์ฉํ๋๋ฐ class์์ this
๋ ํด๋น instance๋ฅผ ์๋ฏธํ๋ค.this
๋ผ๋ ํค์๋๋ก ์ ๊ทผํ๋ค.์ธ์คํด์ค๋ class๋ฅผ ํตํด ์์ฑ๋ ๊ฐ์ฒด์ด๋ค.
์ธ์คํด์ค๋ class์ ํ๋กํผํฐ ์ด๋ฆ๊ณผ ๋ฉ์๋๋ฅผ ๊ฐ๋ ๊ฐ์ฒด์ด๋ค.
์ธ์คํด์ค๋ง๋ค ๋ชจ๋ ๋ค๋ฅธ ํ๋กํผํฐ ๊ฐ์ ๊ฐ๋๋ค.
const morning = new Car('Morning', 200000000);
const spaceship = new Car('์ฐ์ฃผ์ ', 25000000);
console.log(spaceship);
console.log(spaceship.name);
console.log(spaceship.price);
console.log(spaceship.applyDiscount(0.5));
๋ฉ์๋๋ ํจ์์ด๋ค.
๊ทธ๋ฐ๋ฐ ๊ฐ์ฒด๊ฐ ํ๋กํผํฐ ๊ฐ์ผ๋ก ๊ฐ๊ณ ์๋ ๊ฒ์ ๋ฉ์๋๋ผ๊ณ ๋ถ๋ฅธ๋ค.
class์ method๋ Object(๊ฐ์ฒด)์ ๋ฌธ๋ฒ๊ณผ๋ ๊ฐ๋ค.
๋ค๋ง, ๊ฐ์ฒด๋ ํ๋กํผํฐ๋ง๋ค ์ฝค๋ง(,)๋ก ๊ตฌ๋ถํด์ค์ผ ํ์ง๋ง, ํด๋์ค๋ ๊ทธ๋ ์ง ์๋ค.
class Car {
constructor(name, price) {
this.name = name;
this.price = price;
this.department = "์ ๋ฆ์ง์ ";
}
applyDiscount(discount) {
return this.price * discount;
}
changeDepartment(departmentName) {
this.department = departmentName;
}
}
MyMath
ย ๋ผ๋ class๋ฅผ ์์ฑํ๊ธฐconstructor
ย ์์๋ ์ซ์ 2๊ฐ๋ฅผ ์ธ์๋ก ๋ฐ์ ํ๋กํผํฐ๋ก ์ ์ฅgetNumber
ย : ๋ ๊ฐ์ ์ซ์๊ฐ ๋ฌด์์ธ์ง ๋ฐฐ์ด๋ก ๋ฐํํ๋ ๋ฉ์๋ โ ex)ย [1, 2]add
ย : ๋ ๊ฐ์ ์ซ์๋ฅผ ๋ํ๋ ๋ฉ์๋substract
ย : ๋ ๊ฐ์ ์ซ์๋ฅผ ๋นผ๋ ๋ฉ์๋multiply
ย : ๋ ๊ฐ์ ์ซ์๋ฅผ ๊ณฑํ๋ ๋ฉ์๋class MyMath {
constructor(num1, num2) {
this.num1 = num1;
this.num2 = num2;
}
getNumber() {
const arr = [];
arr.push(this.num1);
arr.push(this.num2);
return arr;
}
add() {
return this.num1 + this.num2;
}
substract() {
return this.num1 - this.num2;
}
multiply() {
return this.num1 * this.num2;
}
}