카테고리 없음

[JavaScript] 참조형

공기반 코딩반 2023. 12. 23. 23:36
반응형

배열은 slice() 사용가능

 

let numbers1 = [1, 2, 3];
let numbers2 = numbers1.slice();

numbers2.push(4);

console.log(numbers1);  // [ 1, 2, 3 ]
console.log(numbers2);  // [ 1, 2, 3, 4 ]

 

 

 

참조형은 복사가 불가능함(= 활용)

1) assign 메소드를 이용한 복사 

 

let course1 = {
  title : 'title',
  language: 'JavaScript'
};

let course2 = Object.assign({}, course1);

course2.title = 'type';

console.log(course1);  title 값 그대로
console.log(course2);  title 값 변경

 

 

2) for ... in 문을 이용한 복사 

 

function cloneObject(Object){
  let temp = {};
  for (let key in object){
    temp[key] = object[key];
  }
  
  return temp;
}

let course1 = {
  title : 'title',
  language: 'JavaScript',
  prerequisites: []
};

let course2 = cloneObject(course1);


course2.title = 'type';
course2.prerequisites.push('Python');   // 문제발생 

console.log(course1);
console.log(course2);

 

- 객체 복사는 잘 됨

- course2에 추가한 선이수 과목이 course1에도 나타남 (선이수과목 property가 배열이기 때문에 주소값이 복사됨)

 

 

반응형