1. 프로토타입의 기본 개념
자바스크립트는 프로토타입 기반 언어이다.
자바스크립트의 모든 객체는 자신의 부모 역할을 담당하는 객체와 연결되어 있다. 그리고 이것은 마치 객체 지향의 상속 개념과 같이 부모 객체의 프로퍼티 또는 메소드를 상속받아 사용할 수 있게 한다. 이러한 부모 객체를 Prototype(프로토타입) 객체 또는 줄여서 Prototype(프로토타입)이라 한다.
2. 프로토타입 체인
프로토타입 체인은 객체가 어떤 속성이나 메서드를 찾을 때, 그 객체가 가지고 있는지 확인하고, 없으면 프로토타입을 계속해서 탐색하는 방식이다. 이 체인을 통해 객체는 부모 객체의 속성과 메서드를 상속받아 사용할 수 있다.
이 과정을 프로토타입을 상속받는 과정이라고 말한다.
3. 예시
프로토타입은 주로 생성자 함수나 클래스를 사용할 때 유용하다. 예를 들어, 생성자 함수로 여러 객체를 만들 때, 각 객체에 동일한 메서드를 개별적으로 정의하는 대신, 프로토타입에 메서드를 정의해서 메모리 낭비를 줄이고 효율적인 코드 재사용이 가능하다.
function Person(name) {
this.name = name;
}
Person.prototype.greet = function() {
console.log(`Hello, my name is ${this.name}`);
};
const person1 = new Person("철수");
const person2 = new Person("진수");
person1.greet(); // "Hello, my name is 철수"
person2.greet(); // "Hello, my name is 진수"
위 예시에서 `greet` 메서드는 `Person.prototype`에 정의되어 있어서, `person1`과 `person2`는 각각의 객체에 `greet`을 따로 정의하지 않고도 사용할 수 있다. 이는 프로토타입을 통해 메서드를 공유하는 방식이다.
'STUDY > javascript' 카테고리의 다른 글
자바스크립트의 커링(Currying)에 대해서 알아보자 (0) | 2024.11.04 |
---|---|
호이스팅(Hoisting)과 TDZ(Temporal Dead Zone) (4) | 2024.10.14 |
[면접 질문] function Person(){}, var person = Person(), 그리고 var person = new Person()의 차이점? (0) | 2024.09.25 |
쓰로틀링(Throttling)과 디바운스(Debouncing)의 차이점 (0) | 2024.09.24 |
[자바스크립트] 원시값과 참고값 (2) | 2024.09.20 |