객체와 배열은 참조형

2022. 8. 1. 16:44기본기가 부족하다면/자바스크립트

원래 있던 객체나 배열을 재할당해서 새로운 객체나 배열을 생성한 경우, 기존 객체와 배열의 값이 바뀌는 경우가 있음.

 

이유는

객체 자체를 복사한게 아닌 단지 포인터를 복사했고, 기존 객체와 배열이 가리키는 메모리에 있는 동일한 객체를 가리키기 때문

값을 변경하면 기존 객체와 배열 값이 변경됨

(그래서 person의 name을 변경하면 자동적으로 secondPerson의 이름도 바뀜)

const person = {
    name : "test"
}

const secondPerson = person;

person.name = "test2";
secondPerson = "test3";

console.log(person);		//test3
console.log(secondPerson);	//test3

 

person과 secondPerson 각각의 객체로 역할을 하고싶다면,

아래와 같이 스프레드를 사용해 포인터가 아닌 진짜 복사본을 생성해줄 것

 

const person = {
    name : "test"
}

const secondPerson = {
    ...person
};

person.name = "test2";
secondPerson.name = "test3";

console.log(person);		//test2
console.log(secondPerson);	//test3

 

반응형

'기본기가 부족하다면 > 자바스크립트' 카테고리의 다른 글

[예외처리] Promise, async & await  (0) 2022.12.14
가비지 컬렉터  (0) 2022.12.08
메모리 관리  (0) 2022.12.08
실행 컨텍스트 (Execution Context)  (1) 2022.12.08
Generic 을 알아볼까  (0) 2022.08.01