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

let obj = {firstName: "Ella", lastName: "Choi"};
let copiedObj = Object.assign({}, obj);

console.log(copiedObj) // { firstName: "Ella", lastName: "Choi" }
console.log(obj === copiedObj) // false

(2) Spread Syntax of Object

  • ๋ฐฐ์—ด ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ๊ฐ์ฒด ๋ณต์‚ฌ ์‹œ์—๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

    let obj = {firstNmae: "Ella", lastName: "Choi"};
    let copiedObj = {...obj};
    
    console.log(copiedObj) // { firstName: "Ella", lastName: "**Choi**" }
    console.log(obj === copiedObj) // false

Last updated