라벨이 원시 데이터 타입인 게시물 표시

복제와 참조

복제 와 참조 원시데이터타입은 복제, 객체는 참조 1. 변수에 담겨있는 값이 객체인 경우 같은 객체를 바라보게되므로 참조를하게된다. 즉 객체가 저장되어있는 메모리 주소인 객체에 대한 참조 값이 저장된다. 2. 변수에 담겨있는 값이 원시데이터타입인 경우 복제시 같은 데이터를 참조하지않고 같은 값의 데이터를 각각 소유한다 . 객체를 다른 변수에 할당하면 객체에 대한 참조 값이 하나 더 만들어진다. 하지만 객체도 참조하지않고 복제할 수 있는 방법이 있다. 1번. 빈 객체를 생성하고  프로퍼티값을 설정해준다. 설정해줄때는 기존에 복제하고자하는 객체를 for in문으로 순회하면서 프로퍼티 키와 값을 저장해주면 값은 똑같으면서 독립적인 객체가 생성된다. 2번. Object.assign() 을 사용하면 반복문 없이도 간단하게 객체를 복사할 수 있다. // ### 복제1 ### // var a = 1 ; var b = a ; b = 2 ; console . log (a) ; // 1 // ### 참조 ### // var a = { id : 1 }; var b = a ; b . id = 2 ; console . log (a . id) ; // 2 // ### 복제2 ### // var a = { id : 1 }; var b = a ; b = { id : 2 }; console . log (a . id) ; // 1 -#복제1#의 경우 숫자를 값으로 할당하고 있는데 숫자(Number)는 원시데이터타입으로 값을 참조하지않고 복제를 하게된다. 그러므로 b에 할당된 a의값이 변경되더라도 별개의 데이터이기때문에 오리지널 a의 데이터를 변경시키지 않는다. -#참조#를 보면 값을 원시데이터타입이아닌 객체로 할당받은경우 복제가아닌 참조를 하게되는데 이 경우 참조하고있는 a의 값을 2로 변경하였기 때문에 a.id값도 2가 출력된다. -#복제2#의 경우 a는 객체를 할당받아 변수