프로토타입의 기본 개념
- 객체의 속성과 메서드를 다른 객체와 공유하기 위한 메커니즘
- 모든 자바스크립트 객체는 'prototype'이라는 숨겨진 속성이 있으며, 이는 다른 객체의 참조를 가리킬 수 있음
- Object 관련 메서드는 이미 생성된 개별 객체 인스턴스에 직접 접근하여 속성을 추가하거나 변경
- 프로토타입 속성은 생성자 함수의 속성을 추가하거나 변경
- Object : 만들어진 붕어빵에 크림발라먹기
- 프로토타입 : 붕어빵 틀을 개조하여 모양 바꾸기
function Person(name) {
this.name = name
}
Person.prototype.greet = function() {
return "Hello, my name is " + this.name
}
let alice = new Person("Alice")
let tom = new Person("Tom")
console.log(alice.greet());
console.log(tom.greet());
프로토타입을 사용하는 이유
- 메모리 효율성 : 모든 인스턴스가 메서드와 속성을 공유하여 메모리 사용을 최소화
- 코드 재사용성 : 공통 기능을 프로토타입에 정의하여 중복을 줄이고 재사용성을 높임
- 동적 속성 추가 및 수정 : 실행 중인 객체에 속성과 메서드를 동적으로 추가하거나 변경할 수 있음
- 확장성 : 프로토타입 체인을 통해 복잡한 객체 계층과 상속 구조를 구성할 수 있음
- 객체 지향 프로그래밍 지원 : 클래스 기반 언어의 상속과 유사한 패턴을 구현하여 객체 지향적 설계를 지원
- 유연성 : 객체의 구조와 행동을 고정하지 않고 실행 중에 변경할 수 있는 유연성 제공