본문 바로가기

프로그래밍 언어/Script

JAVA script 참조와 복제


<참조>
var a = {‘num’ : 1};
var b = a;
b.num = 2;
console.log(a.num);
> 2
위 코드에서 변수 a는 {‘num’ : 1};을 통해 새로운 객체를 생성하여 그를 가리키고 있고, 변수 b는 그런 a를 참조한다. 이 상태는 a와 b가 서로 같은 객체 num : 1을 가리키는 형태이다. 이때, b를 통해 속성 값을 바꾸면 b가 가리키는 객체의 값을 바꾸게 되는데, 이때 바뀐 객체는 a또한 참조하고 있는 객체였기에 a.num도 값이 바뀐다. 하지만 아래 코드는 얘기가 달라진다.

var a = {‘num’ : 1};
var b = a;
var b = {‘num’ : 2};
console.log(a.num);
> 1
a변수는 num : 1이라는 객체를 참조하고 b또한 그런 a를 참조했지만, 3행에서 b에게 새로운 객체를 생성해 이를 참조하게 한 것이다. 하여 a의 속성을 출력해도 원형인 1을 출력하게 된 것이다. 이처럼 새로운 객체를 생성하는 것은 a의 속성에 영향을 끼치지 않는다.
</참조>    // 변수에 담긴 값이 객체일 경우 참조

<복제>
var a = 1;
var b = a;
var b = 2;
console.log(a)
> 1
위 코드에서 a는 1을 가리키고, 2행을 실행했을 때 b는 a의 값인 1을 “복제”한다. 하여 b의 값을 변화시켜도 a와 b는 서로 다른 값을 갖고 있었기에 서로에게 영향을 끼치지 않는다.
</복제>
// 변수에 담긴 값이 원시 데이터일 경우 복제

'프로그래밍 언어 > Script' 카테고리의 다른 글

JAVA script 레퍼 객체  (0) 2022.12.13
JAVA script 원시 데이터 타입  (0) 2022.12.13
JAVA script hasOwnProperty  (0) 2022.12.13
JAVA script 표준 내장 객체 종류  (0) 2022.12.13
JAVA script prototype  (0) 2022.12.13