GoF의 Prototype 패턴으로 예시 코드를 들어보면 다음과 같습니다.
class User {
constructor(
public name: string,
public hobbies: string[],
public settings: Map<string, any>
) {}
clone(): User {
const copy = Object.create(
Object.getPrototypeOf(this)
);
Object.assign(
copy,
structuredClone(this)
);
return copy;
}
}
clone 매서드에 깊은 복사에 대한 코드가 언급되고 있습니다. 9번 라인의 코드가 매서드에 대한 복사, 13번 라이의 코드가 속성에 대한 깊은 복사입니다. 매서드를 가진 객체의 복사에서는 이 두가지에 대한 복사가 반드시 필요합니다.
