2009-12-22 3 views
10

저는 C 배경에서 javascript를 사용하려고합니다. 자바 스크립트에서 할당 연산자를 사용하여 하나의 객체를 다른 객체에 할당하면 값을 다른 객체로 복사합니까? 아니면 둘 다 동일한 데이터를 가리 킵니까? 또는이 경우 대입 연산자가 아무 것도하지 않습니까? 위의 예에서 자바에서 할당 연산자를 사용하여 하나의 객체를 다른 객체와 동일하게 설정합니다.

function point_type() 
{ 
this.x = 0; 
this.y = 0; 
} 

var pnt1 = new point_type(); 
var pnt2 = new point_type(); 

pnt1.x = 4; 
pnt1.y = 5; 

pnt2 = pnt1; 

pnt1.x = 8; 
pnt2.y = 9; 

해주기 동일한 8 pnt2.x 않거나 4 여전히 동일 않거나 0 여전히 동일합니까?

네, 저는이 문제를 직접 테스트 할 수 있다는 것을 알고 있습니다. 커뮤니티가 답변을 내놓을 때까지 기다리는 동안 그 일을 할 것입니다. 그러나, 내 질문에 대한 답변이 한 예를 들어 그냥 한 예를 들어 대답을 가서 자바 스크립트 개체가 작동하는 방법과 몇 가지 모범 사례에 대한 빛을 밝힐 수 있기를 바랍니다.

위로 질문하기 :
답변은 참조가 복사 된 것 같습니다. pnt2와 pnt1은 이제 같은 데이터를 가리 킵니다. 값을 복사 할 수 있도록 내 개체를 설정할 수 있습니까? 어떻게이 일반적으로 자바 스크립트에서 수행됩니까? 분명히이 객체를 복사해야 할 때마다 각 속성을 개별적으로 설정하지 않으려합니다.

답변

12

JavaScript에서는 프리미티브 유형이 값으로 복사되고 참조 유형은 참조로 복사됩니다. 여기에 더 많은 정보 : http://docstore.mik.ua/orelly/web/jscript/ch09_03.html

+0

자바 스크립트 (http://oranlooney.com/functional-javascript/)에서 깊은 사본, 얕은 사본 및 "복제본"에 대한 훌륭한 읽기 – micahwittman

2

그것은 그 문 그래서 당신은 PNT1 위해 할 어떤 수정 pnt2에 표시됩니다 PNT1 객체에 pnt2 객체를 가리키는 8

pnt2 = pnt1 

같습니다.

1

예에서 보여준 개체가 주어지면 개체에 대한 참조가 설정됩니다. 기본 유형 (숫자, 날짜)이면 객체를 복사합니다. 내가 JS에 다른 사본 하나의 개체 필요할 때마다

14

, 난 그냥 원시적에 캐스팅 :

var newObject = JSON.stringify(oldObject); 

을 그리고 내가 그것을 사용해야 할 때

var evenNewerObj = JSON.parse(newObject); 

희망이 누군가를 돕는다.

관련 문제