๋ฐ์ํ
๐ช ์์ ๋ณต์ฌ
๋ฐ๋ก ์๋ ๋จ๊ณ์ ๊ฐ๋ง ๋ณต์ฌํ๋ ๊ฒ
๐ช ๊น์ ๋ณต์ฌ
๋ด๋ถ์ ๋ชจ๋ ๊ฐ๋ค์ ํ๋ํ๋ ์ฐพ์์ ์ ๋ถ ๋ณต์ฌํ๋ ๊ฒ
๐๐ป ๊น์ ๋ณต์ฌ๋ฅผ ํ๋ ๋ฐฉ๋ฒ
1. ๊ฐ์ฒด์ ๊น์ ๋ณต์ฌ๋ฅผ ์ํํ๋ ๋ฒ์ฉ ํจ์ ์ฌ์ฉํ๊ธฐ
var copyObjectDeep = function(target) {
var result = {};
if (typeof target === 'object' && target !== null) {
for (var prop in target) {
result[prop] = copyObjectDeep(target[prop]);
}
} else {
result = target;
}
return result;
}
์ด ํจ์๋ฅผ ์ฌ์ฉํด ๊ฐ์ฒด๋ฅผ ๋ณต์ฌํ ๋ค์์๋ ์๋ณธ๊ณผ ์ฌ๋ณธ์ด ์๋ก ์์ ํ ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๊ฒ ๋์ด ์ด๋ ์ชฝ์ ํ๋กํผํฐ๋ฅผ ๋ณ๊ฒฝํ๋๋ผ๋ ๋ค๋ฅธ ์ชฝ์ ์ํฅ์ ์ฃผ์ง ์๋๋ค.
2. ๊ฐ์ฒด๋ฅผ JSON ๋ฌธ๋ฒ์ผ๋ก ํํ๋ ๋ฌธ์์ด๋ก ์ ํํ๋ค๊ฐ ๋ค์ JSON ๊ฐ์ฒด๋ก ๋ฐ๊พธ๋ ๊ฒ.
var copyObjectViaJSON = function(target) {
return JSON.parse(JSON.stringify(target));
};
var obj = {
a: 1;
b: {
c: null,
d: [1, 2],
func1: function () { console.log(3); }
},
func2: function () { console.log(4); }
};
var obj2 = copyObjectViaJSON(obj);
obj2.a = 3;
obj2.b.c = 4;
obj.b.d[1] = 3;
console.log(obj); // { a: 1, b: { c: null, d: [1, 3], func1: f() }, func2: f() }
console.log(obj2); // { a: 3, b: { c: 4, d: [1, 2] } }
๋ฐ์ํ
'JavaScript > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript] ๋ค์ํ ๋ฐฐ์ด ๋ฉ์๋ (0) | 2021.11.18 |
---|---|
์ ์ฌ ๋ฐฐ์ด ๊ฐ์ฒด(Array-Like Object) (0) | 2021.11.18 |
immutable.js, baobab.js (0) | 2021.11.17 |
arrow function์์ { }(์ค๊ดํธ)๊ฐ ์๊ณ ์๊ณ ์ ์ฐจ์ด (0) | 2021.11.16 |
ํจ์ ์ ์ธ๋ฌธ๊ณผ ํจ์ ํํ์ (0) | 2021.11.16 |
๋๊ธ