[javascript] 프로토타입과 인스턴스의 차이점

자바스크립트에서 프로토타입(prototype)과 인스턴스(instance)는 객체지향 프로그래밍에서 중요한 개념입니다. 이 두 용어를 제대로 이해하는 것은 자바스크립트를 이해하는 데 중요합니다. 이 글에서는 프로토타입과 인스턴스의 차이점에 대해 알아보겠습니다.

프로토타입(Prototype)

프로토타입은 모든 객체가 가지고 있는 속성으로, 다른 객체로부터 상속받은 메소드나 프로퍼티가 담겨 있는 객체입니다. 모든 함수의 기본 속성 중 하나가 prototype 입니다. 이 prototype 속성에는 해당 함수로부터 만들어진 새로운 객체의 부모가 되는 객체가 할당됩니다.

function Person(name) {
  this.name = name;
}

Person.prototype.sayHello = function() {
  console.log("Hello, my name is " + this.name);
};

const person1 = new Person("Alice");
const person2 = new Person("Bob");

person1.sayHello(); // 출력: Hello, my name is Alice
person2.sayHello(); // 출력: Hello, my name is Bob

위의 예제에서 Person.prototype은 모든 Person 인스턴스가 상속받는 메소드 sayHello를 포함하고 있습니다.

인스턴스(Instance)

인스턴스는 클래스의 실제 사례(instance)를 나타냅니다. 클래스로부터 만들어진 각 객체는 해당 클래스의 인스턴스입니다.

function Circle(radius) {
  this.radius = radius;
}

const circle1 = new Circle(5);
const circle2 = new Circle(10);

위의 예제에서 circle1circle2Circle 클래스의 인스턴스입니다.

결론

프로토타입은 상속을 통해 메소드와 프로퍼티를 공유할 수 있게 해주는 객체이고, 인스턴스는 클래스의 구체적인 사례를 나타냅니다. 프로토타입과 인스턴스는 객체지향 프로그래밍을 이해하는 데 중요한 개념이므로 잘 숙지해두시면 좋습니다.

참조: MDN web docs - 프로토타입