결론부터 말하자면
- 모든 인스턴스가 동일한 메서드를 공유하도록 합니다.
- 클래스 생성자를 사용한 인스턴스 멤버 추가는 각 인스턴스가 고유한 메서드를 가지게 하며, 인스턴스별로 개별적인 동작을 정의할 수 있습니다.
프로토타입을 사용한 메서드 추가
function MyClass(name) {
this.name = name;
}
MyClass.prototype.sayHello = function() {
console.log(`Hello, ${this.name}!`);
};
const instance1 = new MyClass('Alice');
instance1.sayHello(); // Hello, Alice!
클래스 문법을 사용한 인스턴스 메서드 추가
class MyClass {
constructor(name) {
this.name = name;
this.sayHello = function() {
console.log(`Hello, ${this.name}!`);
};
}
}
const instance1 = new MyClass('Alice');
const instance2 = new MyClass('Bob');
instance1.sayHello(); // Hello, Alice!
instance2.sayHello(); // Hello, Bob!
// 인스턴스마다 고유한 메서드
console.log(instance1.sayHello === instance2.sayHello); // false