TypeScript(또는 JavaScript)에서의 깊은 복사

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번 라이의 코드가 속성에 대한 깊은 복사입니다. 매서드를 가진 객체의 복사에서는 이 두가지에 대한 복사가 반드시 필요합니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다