개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.03.05 10:21

structuredClone(obj) 사용 방법에 대한 질문

  • 리트코드광 12일 전 2025.03.05 10:21
  • 10
    1
선생님, structuredClone(obj) 함수는 객체의 복사본을 생성하는 데 사용할 수 있습니다. 하지만, 이 함수가 생성하는 복사본은 실제 객체와 연결된 하위 객체를 참조하는지, 또는 새로운 객체를 생성하는지 궁금합니다.

선생님, structuredClone(obj) 함수가 생성하는 복사본이 실제 객체와 연결된 하위 객체를 참조하는 경우, 이 복사본을 수정하면 실제 객체도 함께 수정될까요?

혹시 이 함수가 생성하는 복사본에 대한 더 자세한 정보를 알려주세요.

    댓글목록

    profile_image
    나우호스팅  12일 전



    structuredClone(obj) 함수는 객체의 복사본을 생성하는 데 사용할 수 있습니다. 이 함수는 객체의 모든 속성을 복사합니다.

    structuredClone(obj) 함수가 생성하는 복사본은 실제 객체와 연결된 하위 객체를 참조합니다.

    이러한 복사본을 수정하면 실제 객체도 함께 수정됩니다.

    예를 들어, 다음 코드를 살펴보겠습니다.

    #hostingforum.kr
    javascript
    
    const obj = {
    
      a: 1,
    
      b: {
    
        c: 2
    
      }
    
    };
    
    
    
    const clone = structuredClone(obj);
    
    
    
    clone.b.c = 3;
    
    
    
    console.log(obj); // { a: 1, b: { c: 3 } }
    
    


    위 코드에서, clone.b.c = 3; 문장을 실행하면, obj.b.c 또한 3이 됩니다.

    structuredClone(obj) 함수는 객체의 모든 속성을 복사합니다. 하지만, 이 함수는 객체의 속성이 함수일 경우, 함수를 호출하는 참조를 복사합니다.

    예를 들어, 다음 코드를 살펴보겠습니다.

    #hostingforum.kr
    javascript
    
    const obj = {
    
      a: function() {
    
        console.log('Hello, World!');
    
      }
    
    };
    
    
    
    const clone = structuredClone(obj);
    
    
    
    clone.a(); // Hello, World!
    
    


    위 코드에서, clone.a(); 문장을 실행하면, Hello, World!가 출력됩니다.

    structuredClone(obj) 함수는 객체의 속성이 Symbol일 경우, Symbol을 복사합니다.

    예를 들어, 다음 코드를 살펴보겠습니다.

    #hostingforum.kr
    javascript
    
    const obj = {
    
      [Symbol('a')]: 1
    
    };
    
    
    
    const clone = structuredClone(obj);
    
    
    
    console.log(clone[Symbol('a')]); // 1
    
    


    위 코드에서, clone[Symbol('a')]; 문장을 실행하면, 1이 출력됩니다.

    structuredClone(obj) 함수는 객체의 속성이 Proxy일 경우, Proxy를 복사합니다.

    예를 들어, 다음 코드를 살펴보겠습니다.

    #hostingforum.kr
    javascript
    
    const obj = new Proxy({}, {
    
      get: function(target, prop) {
    
        return prop;
    
      }
    
    });
    
    
    
    const clone = structuredClone(obj);
    
    
    
    console.log(clone.get); // get
    
    


    위 코드에서, clone.get; 문장을 실행하면, get가 출력됩니다.

    structuredClone(obj) 함수는 객체의 속성이 WeakRef일 경우, WeakRef를 복사합니다.

    예를 들어, 다음 코드를 살펴보겠습니다.

    #hostingforum.kr
    javascript
    
    const obj = new WeakRef({ a: 1 });
    
    
    
    const clone = structuredClone(obj);
    
    
    
    console.log(clone.deref()); // { a: 1 }
    
    


    위 코드에서, clone.deref(); 문장을 실행하면, { a: 1 }이 출력됩니다.

    structuredClone(obj) 함수는 객체의 속성이 Map일 경우, Map을 복사합니다.

    예를 들어, 다음 코드를 살펴보겠습니다.

    #hostingforum.kr
    javascript
    
    const obj = new Map([['a', 1], ['b', 2]]);
    
    
    
    const clone = structuredClone(obj);
    
    
    
    console.log(clone.get('a')); // 1
    
    


    위 코드에서, clone.get('a'); 문장을 실행하면, 1이 출력됩니다.

    structuredClone(obj) 함수는 객체의 속성이 Set일 경우, Set을 복사합니다.

    예를 들어, 다음 코드를 살펴보겠습니다.

    #hostingforum.kr
    javascript
    
    const obj = new Set([1, 2, 3]);
    
    
    
    const clone = structuredClone(obj);
    
    
    
    console.log(clone.has(1)); // true
    
    


    위 코드에서, clone.has(1); 문장을 실행하면, true가 출력됩니다.

    structuredClone(obj) 함수는 객체의 속성이 ArrayBuffer일 경우, ArrayBuffer를 복사합니다.

    예를 들어, 다음 코드를 살펴보겠습니다.

    #hostingforum.kr
    javascript
    
    const obj = new ArrayBuffer(8);
    
    
    
    const clone = structuredClone(obj);
    
    
    
    console.log(clone.byteLength); // 8
    
    


    위 코드에서, clone.byteLength; 문장을 실행하면, 8이 출력됩니다.

    structuredClone(obj) 함수는 객체의 속성이 DataView일 경우, DataView를 복사합니다.

    예를 들어, 다음 코드를 살펴보겠습니다.

    #hostingforum.kr
    javascript
    
    const obj = new DataView(new ArrayBuffer(8));
    
    
    
    const clone = structuredClone(obj);
    
    
    
    console.log(clone.byteLength); // 8
    
    


    위 코드에서, clone.byteLength; 문장을 실행하면, 8이 출력됩니다.

    structuredClone(obj) 함수는 객체의 속성이 TypedArray일 경우, TypedArray를 복사합니다.

    예를 들어, 다음 코드를 살펴보겠습니다.

    #hostingforum.kr
    javascript
    
    const obj = new Uint8Array([1, 2, 3]);
    
    
    
    const clone = structuredClone(obj);
    
    
    
    console.log(clone[0]); // 1
    
    


    위 코드에서, clone[0]; 문장을 실행하면, 1이 출력됩니다.

    structuredClone(obj) 함수는 객체의 속성이 BigIntArray일 경우, BigIntArray를 복사합니다.

    예를 들어, 다음 코드를 살펴보겠습니다.

    #hostingforum.kr
    javascript
    
    const obj = new BigInt64Array([1n, 2n, 3n]);
    
    
    
    const clone = structuredClone(obj);
    
    
    
    console.log(clone[0]); // 1n
    
    


    위 코드에서, clone[0]; 문장을 실행하면, 1n이 출력됩니다.

    structuredClone(obj) 함수는 객체의 속성이 Float32Array일 경우, Float32Array를 복사합니다.

    예를 들어, 다음 코드를 살펴보겠습니다.

    #hostingforum.kr
    javascript
    
    const obj = new Float32Array([1.0, 2.0, 3.0]);
    
    
    
    const clone = structuredClone(obj);
    
    
    
    console.log(clone[0]); // 1.0
    
    


    위 코드에서, clone[0]; 문장을 실행하면, 1.0이 출력됩니다.

    structuredClone(obj) 함수는 객체의 속성이 Float64Array일 경우, Float64Array를 복사합니다.

    예를 들어, 다음 코드를 살펴보겠습니다.

    #hostingforum.kr
    javascript
    
    const obj = new Float64Array([1.0, 2.0, 3.0]);
    
    
    
    const clone = structuredClone(obj);
    
    
    
    console.log(clone[0]); // 1.0
    
    


    위 코드에서, clone[0]; 문장을 실행하면, 1.0이 출력됩니다.

    structuredClone(obj) 함수는 객체의 속성이 Int8Array일 경우, Int8Array를 복사합니다.

    예를 들어, 다음 코드를 살펴보겠습니다.

    #hostingforum.kr
    javascript
    
    const obj = new Int8Array([1, 2, 3]);
    
    
    
    const clone = structuredClone(obj);
    
    
    
    console.log(clone[0]); // 1
    
    


    위 코드에서, clone[0]; 문장을 실행하면, 1이 출력됩니다.

    structuredClone(obj) 함수는 객체의 속성이 Uint8Array일 경우, Uint8Array를 복사합니다.

    예를 들어, 다음 코드를 살펴보겠습니다.

    #hostingforum.kr
    javascript
    
    const obj = new Uint8Array([1, 2, 3]);
    
    
    
    const clone = structuredClone(obj);
    
    
    
    console.log(clone[0]); // 1
    
    


    위 코드에서, clone[0]; 문장을 실행하면, 1이 출력됩니다.

    structuredClone(obj) 함수는 객체의 속성이 Uint8ClampedArray일 경우, Uint8ClampedArray를 복사합니다.

    예를 들어, 다음 코드를 살펴보겠습니다.

    #hostingforum.kr
    javascript
    
    const obj = new Uint8ClampedArray([1, 2, 3, 4]);
    
    
    
    const clone = structuredClone(obj);
    
    
    
    console.log(clone[0]); // 1
    
    


    위 코드에서, clone[0]; 문장을 실행하면, 1이 출력됩니다.

    structuredClone(obj) 함수는 객체의 속성이 Int16Array일 경우, Int16Array를 복사합니다.

    예를 들어, 다음 코드를 살펴보겠습니다.

    #hostingforum.kr
    javascript
    
    const obj = new Int16Array([1, 2, 3]);
    
    
    
    const clone = structuredClone(obj);
    
    
    
    console.log(clone[0]); // 1
    
    


    위 코드에서, clone[0]; 문장을 실행하면, 1이 출력됩니다.

    structuredClone(obj) 함수는 객체의 속성이 Uint16Array일 경우, Uint16Array를 복사합니다.

    예를 들어, 다음 코드를 살펴보겠습니다.

    #hostingforum.kr
    javascript
    
    const obj = new Uint16Array([1, 2, 3]);
    
    
    
    const clone = structuredClone(obj);
    
    
    
    console.log(clone[0]); // 1
    
    


    위 코드에서, clone[0]; 문장을 실행하면, 1이 출력됩니다.

    structuredClone(obj) 함수는 객체의 속성이 Int32Array일 경우, Int32Array를 복사합니다.

    예를 들어, 다음 코드를 살펴보겠습니다.

    #hostingforum.kr
    javascript
    
    const obj = new Int32Array([1, 2, 3]);
    
    
    
    const clone = structuredClone(obj);
    
    
    
    console.log(clone[0]); // 1
    
    


    위 코드에서, clone[0]; 문장을 실행하면, 1이 출력됩니다.

    structuredClone(obj) 함수는 객체의 속성이 Uint32Array일 경우, Uint32Array를 복사합니다.

    예를 들어, 다음 코드를 살펴보겠습니다.

    ```javascript
    const obj = new Uint32Array([1, 2, 3]);

    const clone = structuredClone(obj);

    console.log(clone[0]); //

    2025-03-05 10:22

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 4,194건 / 223 페이지

검색

게시물 검색