포인터

정중식·2022년 7월 11일
0

자바스크립트

목록 보기
1/20
post-thumbnail

최근 유데미 리액트 강의를 들으면서 포인터 개념에대해서 알게되어서 정리하게 되었습니다.
제가 이해하는걸 적은것이니 틀릴수도 있습니다.

포인터란? 객체를 복사했을때 원본객체의 값을 변경하면 복사 객체도 영향을 받게된다.
객체를 복사했을때 그 원본객체의 메모리에 할당된 값을 가져오는것이기 때문이다.

무슨 말 일까?

const person = {
  name: 'max
};

const secondPerson = person;

person.name = 'Menu'

console.log(secondPerson);

// console.log 값

//[Object object] ={
//  name:'Menu'
//};

위의 코드와 결과를 보면 알겠지만 우리가 복사객체로 알고있는 secondPerson는 사실 복사객체가 아니라 참조객체인것이다.
이러한 개념을 '포인터' 라고 나는 이해했다.

그러면 포인터에의한 오류를 예방하려면 어떡해야할까?
바로 스프레드 연산자를 사용하면 좋을거다.

const person = {
  name: 'max
};

const secondPerson = {
 ...person 
};

person.name = 'Menu'

console.log(secondPerson);

// console.log 값

//[Object object] ={
//  name:'max'
//};

핵심은 포인터가 아닌 진짜 복사본을 사용했다.

복사하고 싶다면, 새로운 객체를 생성해서 전체 객체를 복사하는것이 아니라,
프로퍼티를 복사해야한다.

덧붙여 설명하자면 프로퍼티를 복사한다고했는데 쉽게말해서 스프레드 연산자를 사용하여 객체의 화살표(포인트)가 달라지게끔해주자.

화살표(포인트)란, 자바스크립트는 let test=[1,2,3] 이라고 변수를 선언하면
[1,2,3]은 램이라는 가상공간에 머물러 있고, let test변수는 그 자료가 어디있는지 가르키는 화살표만 담겨있다. 이 개념을 포인트 혹은 화살표라고 말한다.

profile
내 가치를 찾아서

0개의 댓글