JavaScript/JavaScript
์์ ๋ณต์ฌ, ๊น์ ๋ณต์ฌ
์ฝ๋ฉํ๋ ๋ถ์ด
2021. 11. 17. 15:55
๋ฐ์ํ
๐ช ์์ ๋ณต์ฌ
๋ฐ๋ก ์๋ ๋จ๊ณ์ ๊ฐ๋ง ๋ณต์ฌํ๋ ๊ฒ
๐ช ๊น์ ๋ณต์ฌ
๋ด๋ถ์ ๋ชจ๋ ๊ฐ๋ค์ ํ๋ํ๋ ์ฐพ์์ ์ ๋ถ ๋ณต์ฌํ๋ ๊ฒ
๐๐ป ๊น์ ๋ณต์ฌ๋ฅผ ํ๋ ๋ฐฉ๋ฒ
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] } }
๋ฐ์ํ