Copy

1. 배열을 λ³΅μ‚¬ν•˜λŠ” 두 κ°€μ§€ 방법

(1) slice

  • 원본 λ°°μ—΄ 볡사 κ°€λŠ₯

  • λ³΅μ‚¬ν•˜μ—¬ μƒˆλ‘­κ²Œ μƒμ„±λœ 배열은 원본 λ°°μ—΄κ³Ό 같은 μš”μ†Œλ₯Ό κ°–μ§€λ§Œ, μ°Έμ‘°ν•˜κ³  μžˆλŠ” μ£Όμ†ŒλŠ” λ‹€λ₯΄λ‹€.

    let arr = [0, 1, 2, 3];
    let copiedArr = arr.slice();
    console.log(copiedArr); // [0, 1, 2, 3]
    console.log(arr === copiedArr); // false
  • μ£Όμ†Œκ°€ λ‹€λ₯΄κΈ° λ•Œλ¬Έμ— λ³΅μ‚¬ν•œ 배열에 μš”μ†Œλ₯Ό 좔가해도, 원본 λ°°μ—΄μ—λŠ” μΆ”κ°€λ˜μ§€ μ•ŠλŠ”λ‹€.

    copiedArr.push(4);
    console.log(copiedArr); // [0, 1, 2, 3, 4]
    console.log(arr);// [0, 1, 2, 3]

(2) Spread Syntax of Array

  • ES6μ—μ„œ μƒˆλ‘­κ²Œ μΆ”κ°€λœ λ¬Έλ²•μœΌλ‘œ, 배열을 펼칠 수 μžˆλ‹€.

  • 배열이 ν• λ‹Ήλœ λ³€μˆ˜λͺ… μ•žμ— ...을 λΆ™μ—¬μ£Όλ©΄ λœλ‹€.

    let arr = [0, 1, 2, 3];
    console.log(...arr); // 0 1 2 3
  • 배열을 μƒμ„±ν•˜λŠ” 방법을 λ¨Όμ € 이해해 보자.

  • μ•„λž˜μ™€ 같이 같은 μš”μ†Œλ₯Ό κ°€μ§„ 배열을 두 개 λ§Œλ“  ν›„ λ³€μˆ˜μ— 각각 ν• λ‹Ήν•œλ‹€λ©΄, 두 λ³€μˆ˜λŠ” 같은 μ£Όμ†Œλ₯Ό μ°Έμ‘°ν• κΉŒ?

  • 닡은, μ°Έμ‘° μžλ£Œν˜•μ΄κΈ° λ•Œλ¬Έμ— 각각 λ‹€λ₯Έ μ£Όμ†Œλ₯Ό μ°Έμ‘°ν•œλ‹€.

    let num = [1, 2, 3];
    let int = [1, 2, 3];
    
    console.log(num === int) // false
  • λ˜ν•œ μƒˆλ‘œμš΄ λ°°μ—΄ μ•ˆμ— 원본 배열을 νŽΌμ³μ„œ μ „λ‹¬ν•˜λ©΄, 원본 λ°°μ—΄κ³Ό 같은 μš”μ†Œλ₯Ό κ°€μ§€κ³  μžˆμ§€λ§Œ 각각 λ‹€λ₯Έ μ£Όμ†Œλ₯Ό μ°Έμ‘°ν•˜κ²Œ λœλ‹€.

  • 결과적으둜 slice() λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•œ 것과 λ™μΌν•˜κ²Œ λ™μž‘ν•˜λŠ” 것이닀.

    let arr = [0, 1, 2, 3];
    let copiedArr = [...arr];
    console.log(copiedArr); // [0, 1, 2, 3]
    console.log(arr === copiedArr); // false
    
    copiedArr.push(4);
    console.log(copiedArr); // [0, 1, 2, 3, 4]
    console.log(arr); // [0, 1, 2, 3]

2. 객체λ₯Ό λ³΅μ‚¬ν•˜λŠ” 두 κ°€μ§€ 방법

(1) Object.assign

(2) Spread Syntax of Object

  • λ°°μ—΄ 뿐만 μ•„λ‹ˆλΌ, 객체 볡사 μ‹œμ—λ„ μ‚¬μš© κ°€λŠ₯

Last updated