Prototype in JS

HanHyuk·2024년 1월 5일

프로토타입의 기본 개념

  • 객체의 속성과 메서드를 다른 객체와 공유하기 위한 메커니즘
  • 모든 자바스크립트 객체는 'prototype'이라는 숨겨진 속성이 있으며, 이는 다른 객체의 참조를 가리킬 수 있음
  • Object 관련 메서드는 이미 생성된 개별 객체 인스턴스에 직접 접근하여 속성을 추가하거나 변경
  • 프로토타입 속성은 생성자 함수의 속성을 추가하거나 변경
  • Object : 만들어진 붕어빵에 크림발라먹기
  • 프로토타입 : 붕어빵 틀을 개조하여 모양 바꾸기
// 객체 생성자 함수
function Person(name) {
  this.name = name
}

// prototype을 사용하여 Person 객체의 모든 인스턴스에 공통 메서드 추가
Person.prototype.greet = function() {
  return "Hello, my name is " + this.name
}

// Person 객체의 인스턴스 생성
let alice = new Person("Alice")
let tom = new Person("Tom")

//greet 메서드 호출
console.log(alice.greet()); // Hello, my name is Alice
console.log(tom.greet()); // Hello, my name is Tom

프로토타입을 사용하는 이유

  • 메모리 효율성 : 모든 인스턴스가 메서드와 속성을 공유하여 메모리 사용을 최소화
  • 코드 재사용성 : 공통 기능을 프로토타입에 정의하여 중복을 줄이고 재사용성을 높임
  • 동적 속성 추가 및 수정 : 실행 중인 객체에 속성과 메서드를 동적으로 추가하거나 변경할 수 있음
  • 확장성 : 프로토타입 체인을 통해 복잡한 객체 계층과 상속 구조를 구성할 수 있음
  • 객체 지향 프로그래밍 지원 : 클래스 기반 언어의 상속과 유사한 패턴을 구현하여 객체 지향적 설계를 지원
  • 유연성 : 객체의 구조와 행동을 고정하지 않고 실행 중에 변경할 수 있는 유연성 제공
profile
선한 영향력을 펼치는 개발자가 되겠습니다.

0개의 댓글