์?
์์ ๋ณต์ฌ์ ๊น์ ๋ณต์ฌ๋ฅผ ์์์ผํ๋ ์ด์ ๋ ๋ถ๋ณ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ธฐ ์ํจ์ด๋ค.
์ฐ๋ฆฌ๋ ์ฐธ์กฐํ ๋ฐ์ดํฐ์ธ ๊ฐ์ฒด์ ๊ธฐ๋ณธ์ ์ฑ์ง์ด ๊ฐ๋ณ์ฑ์ธ๊ฑธ ์๊ณ ์๋ค.(์ด์ ๊ธ ์ฐธ๊ณ )
๋๋ฌธ์ ๊ทธ ๊ฐ์ฒด ์์ฒด๋ฅผ ์์ฑํด ๋ถ๋ณ๊ฐ์ฒด๋ฅผ ๋ง๋ค ํ์๊ฐ ์๋ค.
์ฌ๊ธฐ์ ์ฌ์ฉ๋๋๊ฒ ์์๋ณต์ฌ, ๊น์๋ณต์ฌ์ด๋ค.
์์ ๋ณต์ฌ๋ ๊ฐ์ฒด ์์ ๋ ๊ฐ์ฒด๊ฐ ์์๋๋ ์ฐ๋ฆฌ๊ฐ ๋ง์ฃผํ ๋ฌธ์ ์์ ๋ฒ์ด๋ ์ ์๋ค.
ํ์ง๋ง ๊น์ ๋ณต์ฌ๋ ๊ฐ์ฒด ์์ ์๋ ๊ฐ์ฒด๊น์ง ๊ทธ ๊ฐ์ฒด ์์ฒด๋ฅผ ๋ณต์ฌ ์ํค๊ธฐ ๋๋ฌธ์ ์์ ํ ๋ถ๋ณ ๊ฐ์ฒด๋ฅผ ๋ง๋ค ์ ์๋ค.
๋ถ๋ณ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์๋ ์ฌ๋ฌ๊ฐ์ง ๋๊ตฌ, ํ๋ ์์ํฌ๊ฐ ์๋ค๊ณ ํ๋ค.
์ด๋ฒ ํฌ์คํ ์์ ๊ณ ์ ์ ์ผ๋ก ํจ์๋ฅผ ๋ง๋ค์ด ๋ถ๋ณ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด ๋ณด๋ ค๊ณ ํ๋ค.
์์ ๋ณต์ฌ
์์ ๋ณต์ฌ๋ ๋ฐ๋ก ์๋ ๋จ๊ณ์ ๊ฐ๋ง ๋ณต์ฌํ๋ ๋ฐฉ๋ฒ์ด๋ค
์ฝ๋๋ ๋ค์๊ณผ ๊ฐ๋ค.
var = shallowCopy = (target) => {
var result = {};
for(var prop in target){
result[prop] = target[prop];
}
return result;
}
for in ๋ฌธ๋ฒ์ ํ์ฉํด result ๊ฐ์ฒด์ target๊ฐ์ฒด์ ํ๋กํผํฐ๋ฅผ ๋ณต์ฌํ๋ ํจ์๋ค.
์ฝ๋๊ฐ ์ ์๋๋๋์ง ๋ณด์.
var student1 = {
name: "jaeyun",
info: {
age: 24,
height: 174,
},
};
๊ฐ์ฒด๊ฐ ๋ค์๊ณผ ๊ฐ์๋ name๊ณผ age๋ฅผ ๊ฐ๊ฐ ๋ณ๊ฒฝํ ๊ฒฐ๊ณผ๋ค
์ค์ฒฉ๋ ๊ฐ์ฒด์์ ์ฐธ์กฐํ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ํ๋กํผํฐ๋ฅผ ๋ณต์ฌํ ๋ ๊ทธ ์ฃผ์๊ฐ๋ง ๋ณต์ฌํ๊ธฐ ๋๋ฌธ์ age๊ฐ student1, student2๋ชจ๋ ๋ณ๊ฒฝ๋๊ฑธ ๋ณผ ์ ์๋ค.
์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๊น์ ๋ณต์ฌ๊ฐ ํ์ํ๋ค.
๊น์ ๋ณต์ฌ
์ด๋ป๊ฒ ๊น์ ๋ณต์ฌ๋ฅผ ๊ตฌํํ ์ง ๊ณ ๋ฏผํ๋ค๊ฐ ์ฌ๊ทํจ์๋ฅผ ์๊ฐํ๋๋ฐ ์๋๋ ๋ค๋ฅผ๊น ์ฑ ์์๋ ์ฌ๊ทํจ์๋ฅผ ํตํด ๊น์ ๋ณต์ฌ๋ฅผ ๊ตฌํํ๋ค!
์ฝ๋๋ ๋ค์๊ณผ ๊ฐ๋ค.
var deepCopy = (target) => {
var result = {};
if (typeof target === "object" && target !== null) {
for (var prop in target) {
result[prop] = deepCopy(target[prop]);
}
} else {
result = target;
}
};
๋๊ฐ์ ์์ ๋ก ํ์ธํด ๋ณด๊ฒ ๋ค.
๊ธธ๋์ด์ ๋์ด๋ง ๋ฐ๋๊ฑธ ๋ณด๋ ๊น์ ๋ณต์ฌ๊ฐ ์ ์ด๋ฃจ์ด์ง๊ฑธ ์ ์ ์๋ค.
JSON์ ์ด์ฉํ ๊น์ ๋ณต์ฌ ๋ฐฉ๋ฒ
๊ฐ์ฒด๋ฅผ JSON๋ฌธ๋ฒ์ผ๋ก ํํ๋ ๋ฌธ์์ด๋ก ๋ณํ ์ ํํ๋ค๊ฐ ๋ค์ JSON ๊ฐ์ฒด๋ก ๋ฐ๊พธ๋ ๊ฒ์ด๋ค.
์ฝ๋๋ ๋ค์๊ณผ ๊ฐ๋ค.
var JSONCopy = (target) => {
return JSON.parse(JSON.stringify(target));
};
๋ค๋ง ์ด๋ ๋ฉ์๋(ํจ์)๋ ์จ๊ฒจ์ง ํ๋กํผํฐ(ํ๋กํ ํ์ ) ํน์ getter/setter๋ฑ ๊ณผ ๊ฐ์ด JSON์ผ๋ก ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ ๊ฐ์ฒด๋ ๋ณต์ฌํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ์์ ์ค์ฒฉ๊ฐ์ฒด์์ ์ฌ์ฉ์ ์ฉ์ดํ๋ค.
์ฐธ๊ณ ์๋ฃ: [๋์] ์ฝ์ด ์๋ฐ์คํฌ๋ฆฝํธ
'๐ฅ๏ธ Language > Core Javascript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๋ฐ ์คํฌ๋ฆฝํธ ๋ณ์ ๋ณต์ฌ์ ํ ๋น (0) | 2023.02.02 |
---|---|
์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ์ ์ฅํ ๊น? (0) | 2023.01.29 |