자료형은 기본형과 참조형으로 나뉜다.
Number, String, Boolean, Null, Undefined는 기본형이다.
참조형(Reference Type)
객체는 참조형(Reference Type) 이다.
변수에 객체를 할당할 때, 객체 자체가 변수에 할당되는 것이 아니라 해당 객체를 가리키는 주소값이 할당된다.
(기본형은 변수에 해당 기본형 값이 할당됨.)
따라서
let x= {name: 'Codeit'};
let y = x;
이 경우 변수 x 에는 값자체가 아니라 주소값이 담기므로, 변수 y에도 주소값이 담긴다. 따라서 x,y 둘 중 한 쪽을 수정하면 다른 쪽도 수정된다.
참조형 복사하기
메소드 활용하여 복사하기
1. 배열의 경우 - slice() 메소드를 활용하여 복사
slice 메소드의 파라미터 값을 넣지 않으면 원래 값이 그대로 리턴되는 특성을 활용하여 배열 복사할 수 있다.
2. 객체의 경우
- 객체의 assign 메소드를 활용하여 복사
let object2 = Object.assign({}, object1);
반복문(for..in) 활용하여 복사
let object2 = {};
for(let key in object1){
object2[key] = object1[key];
}
이 for문을 함수로 만들어서 객체를 복사하는 함수로 활용할 수 있다.
유의사항
만약 객체 안에 또 배열이나 객체가 있다면, 복사할 때에 객체의 프로퍼티가 참조형이므로 주소값이 복사된다. 따라서 객체나 배열안에 참조형이 중첩되어 있는 경우 복사할 때 유의하여야 한다.
'개발공부 > coding' 카테고리의 다른 글
const 사용하는 이유 (0) | 2024.01.27 |
---|