#10CreationalEasy

Prototype Pattern

Prototype Pattern

같은 클래스의 인스턴스 여러 개가 메서드를 프로토타입 체인으로 공유하도록 Sheep 클래스를 만들고, 자기 자신을 복제하는 clone(name?) 메서드를 구현하세요.

API

export class Sheep {
  constructor(public name: string, public weight: number);
  greet(): string;
  clone(name?: string): Sheep;
}

동작

  • greet()'Baa, I'm <name>' 반환
  • greet프로토타입에 정의 (각 인스턴스마다 개별 함수가 아니어야 함)
  • clone()은 같은 weight + 같은 name으로 새 인스턴스 반환
  • clone(newName)은 weight는 그대로, name만 새로 지정

학습 포인트

  • JS는 기본적으로 prototype 기반 — class 키워드는 syntactic sugar
  • 메서드를 인스턴스가 아닌 prototype에 두면 메모리 절약
  • Object.getPrototypeOf(a) === Object.getPrototypeOf(b)로 공유 확인 가능
언어: