๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
JavaScript/JavaScript

์–•์€ ๋ณต์‚ฌ, ๊นŠ์€ ๋ณต์‚ฌ

by ์ฝ”๋”ฉํ•˜๋Š” ๋ถ•์–ด 2021. 11. 17.
๋ฐ˜์‘ํ˜•

๐ŸŽช ์–•์€ ๋ณต์‚ฌ

๋ฐ”๋กœ ์•„๋ž˜ ๋‹จ๊ณ„์˜ ๊ฐ’๋งŒ ๋ณต์‚ฌํ•˜๋Š” ๊ฒƒ



๐ŸŽช ๊นŠ์€ ๋ณต์‚ฌ

๋‚ด๋ถ€์˜ ๋ชจ๋“  ๊ฐ’๋“ค์„ ํ•˜๋‚˜ํ•˜๋‚˜ ์ฐพ์•„์„œ ์ „๋ถ€ ๋ณต์‚ฌํ•˜๋Š” ๊ฒƒ



 

๐Ÿ‘‰๐Ÿป ๊นŠ์€ ๋ณต์‚ฌ๋ฅผ ํ•˜๋Š” ๋ฐฉ๋ฒ•

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] } }
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€