deep copy, deep freeze 범용 함수

Taek·2021년 5월 3일
0

deep copy

const copyObjectDeep = (target) => {
    let result = {};
    if (typeof target === 'object' && target !== null) {
        for (let prop in target) {
          result[prop] = copyObjectDeep(target[prop]);
        }
    } else {
      	result = target;
    }
    return result;
};

target이 객체인 경우 내부 프로퍼티들을 순회하며 copyObjectDeep 함수를 재귀적으로 호출


deep freeze

const deepFreeze = (target) => {
  if (target && typeof target === 'object' && !Object.isFrozen(target)) {
  	Object.freeze(target);
    	Object.keys(target).forEach(key => deepFreeze(target[key]));
  }
  return target;
};

reference.
코어 자바스크립트 (정재남)
모던 자바스크립트 Deep Dive (이웅모)

0개의 댓글