μλ°μ€ν¬λ¦½νΈμμ ν΄λμ€λ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ ꡬννλ λ° λ§€μ° μ μ©ν λꡬμ λλ€. ν΄λμ€λ κ°μ²΄μ ꡬ쑰μ νλμ μ μνλ νμ μ 곡νλ©°, μ΄λ₯Ό ν΅ν΄ λ κΉλνκ³ κ΄λ¦¬νκΈ° μ¬μ΄ μ½λλ₯Ό μμ±ν μ μμ΅λλ€. μ΄λ² ν¬μ€ν μμλ μλ°μ€ν¬λ¦½νΈ ν΄λμ€μ κΈ°λ³Έ κ°λ κ³Ό μμ λ₯Ό ν΅ν΄ ν΄λμ€λ₯Ό νμ©νλ λ°©λ²μ μμλ³΄κ² μ΅λλ€.
β£ λͺ©μ°¨
01. ν΄λμ€ μ μνκΈ°: κΈ°λ³Έ ꡬ쑰μ ν€μλπ·οΈ
μλ°μ€ν¬λ¦½νΈμμ ν΄λμ€λ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°(OOP)μ μ§μνκΈ° μν΄ ES6(ECMAScript 2015)μμ λμ λ λ¬Έλ²μ λλ€. ν΄λμ€λ₯Ό μ¬μ©νλ©΄ κ°μ²΄λ₯Ό μμ±νκΈ° μν ν νλ¦Ώμ μ μν μ μμ΅λλ€. ν΄λμ€λ νλ‘νΌν°(μμ±)μ λ©μλ(κΈ°λ₯)λ‘ κ΅¬μ±λ©λλ€. λ€μμ μλ°μ€ν¬λ¦½νΈ ν΄λμ€μ κΈ°λ³Έ κ°λ κ³Ό μμ μ λλ€.
ν΄λμ€ μ μ
μλ°μ€ν¬λ¦½νΈ ν΄λμ€λ₯Ό μ μνλ €λ©΄ class ν€μλλ₯Ό μ¬μ©ν©λλ€.
class Person {
// μμ±μ λ©μλ: κ°μ²΄ μμ± μ νΈμΆλ©λλ€.
constructor(name, age) {
this.name = name; // νλ‘νΌν° μ μ
this.age = age; // νλ‘νΌν° μ μ
}
// λ©μλ μ μ
sayHello() {
console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
}
}
κ°μ²΄ μμ±
new ν€μλλ₯Ό μ¬μ©νμ¬ ν΄λμ€λ‘λΆν° κ°μ²΄λ₯Ό μμ±ν©λλ€.
const person1 = new Person('Alice', 30);
const person2 = new Person('Bob', 25);
person1.sayHello(); // μΆλ ₯: Hello, my name is Alice and I am 30 years old.
person2.sayHello(); // μΆλ ₯: Hello, my name is Bob and I am 25 years old.
ν΄λμ€μ κ΅¬μ± μμ
μμ±μ(constructor) λ©μλ
- constructor λ©μλλ κ°μ²΄κ° μμ±λ λ νΈμΆλ©λλ€.
- μ΄ λ©μλλ₯Ό ν΅ν΄ μ΄κΈ° νλ‘νΌν°λ₯Ό μ€μ ν μ μμ΅λλ€.
νλ‘νΌν°(properties)
- ν΄λμ€ λ΄λΆμμ μ μλ λ³μλ‘, κ°μ²΄μ μμ±μ λνλ λλ€.
- μμ±μ λ΄λΆμμ this ν€μλλ₯Ό μ¬μ©νμ¬ μ μν©λλ€.
λ©μλ(methods)
- ν΄λμ€ λ΄λΆμμ μ μλ ν¨μλ‘, κ°μ²΄μ λμμ λνλ λλ€.
02. μμ±μ - κ°μ²΄ μ΄κΈ°ννκΈ°π οΈ
ν΄λμ€ μμ±μλ κ°μ²΄κ° μμ±λ λ νΈμΆλλ νΉλ³ν λ©μλμ λλ€. μμ±μ μμμ κ°μ²΄μ μ΄κΈ° μνλ₯Ό μ€μ ν μ μμ΅λλ€.
class Animal {
constructor(name, species, age) {
this.name = name; // λλ¬Ό μ΄λ¦
this.species = species; // λλ¬Ό μ’
this.age = age; // λλ¬Ό λμ΄
}
}
03. λ€μν κ°μ²΄ μμ±νκΈ°π§ͺ
μμμ μ μν Animal ν΄λμ€λ₯Ό μ¬μ©νμ¬ μ¬λ¬ κ°μ²΄λ₯Ό μμ±ν©λλ€.
const animal1 = new Animal('Leo', 'Lion', 5);
const animal2 = new Animal('Bella', 'Elephant', 8);
const animal3 = new Animal('Max', 'Dog', 3);
console.log(animal1);
console.log(animal2);
console.log(animal3);
κ° μΈμ€ν΄μ€λ Animal ν΄λμ€μ μμ±κ³Ό λ©μλλ₯Ό μμλ°μ΅λλ€. μμ μ½λλ κ°κ°μ λλ¬Ό κ°μ²΄λ₯Ό μμ±νκ³ μ½μμ μΆλ ₯ν©λλ€.
04. ν΄λμ€ μμ±μ μ κ·ΌνκΈ°π¨
μμ±λ κ°μ²΄μ μμ±μ μ κ·Όνλ €λ©΄ μ νκΈ°λ²μ μ¬μ©ν©λλ€.
console.log(animal1.name); // μΆλ ₯: Leo
console.log(animal2.species); // μΆλ ₯: Elephant
console.log(animal3.age); // μΆλ ₯: 3
05. ν΄λμ€ λ©μλ νΈμΆνκΈ°π£οΈ
ν΄λμ€ λ©μλλ κ°μ²΄μ λμμ μ μν©λλ€. μ΄λ₯Ό νΈμΆνμ¬ νΉμ μμ μ μνν μ μμ΅λλ€.
class Animal {
constructor(name, species, age) {
this.name = name;
this.species = species;
this.age = age;
}
displayInfo() {
console.log(`Animal: ${this.name} (${this.species}), Age: ${this.age}`);
}
}
const animal1 = new Animal('Leo', 'Lion', 5);
animal1.displayInfo(); // μΆλ ₯: Animal: Leo (Lion), Age: 5
06. ν΄λμ€μ μΈμ€ν΄μ€μ νμ νμΈνκΈ°
ν΄λμ€μ μΈμ€ν΄μ€μ νμ μ νμΈνλ €λ©΄ instanceof μ°μ°μλ₯Ό μ¬μ©ν©λλ€. μ΄λ₯Ό ν΅ν΄ κ°μ²΄κ° νΉμ ν΄λμ€μ μΈμ€ν΄μ€μΈμ§ νμΈν μ μμ΅λλ€. μλ°μ€ν¬λ¦½νΈμμ ν΄λμ€λ ν¨μλ‘ μ·¨κΈλλ©°, ν΄λμ€λ‘ μμ±ν μΈμ€ν΄μ€λ κ°μ²΄λ‘ μ·¨κΈλ©λλ€.
// instanceof μ°μ°μ μ¬μ©
console.log(animal1 instanceof Animal); // μΆλ ₯: true
console.log(animal2 instanceof Animal); // μΆλ ₯: true
console.log(animal3 instanceof Animal); // μΆλ ₯: true
console.log(animal1 instanceof Array); // μΆλ ₯: false
// typeof μ°μ°μ μ¬μ©
console.log(typeof Animal); // "function
console.log(typeof animal1); // μΆλ ₯: object
console.log(typeof animal2); // μΆλ ₯: object
console.log(typeof animal3); // μΆλ ₯: object
07. ν΅μ¬ λ΄μ©π