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