2014-08-27 2 views
0

다른 많은 프로그래밍 언어에서 변수 값을 사본 또는 참조로 가져올 수 있습니다.변수 참조

예 (PHP) :

$value = 'a value'; 
$copy = $value; 
$ref = &$value; 

$value = 'new value'; 
echo $copy; // 'a value' 
echo $ref; // 'new value' 

자바 스크립트에서 비슷한 기능이 있나요? 즉 객체의 속성을 참조 할 수 있습니까? 새 문자열/객체로 속성을 대체하더라도 참조하는 변수가 새 데이터를 가리 킵니까?

가 여기에 내가 달성하기 위해 노력하고있는 무슨의 예제 코드입니다 : 지금까지 내가 게터/세터를 사용하여 시도

var obj = { property: 'a value' } 
var another = obj.property // save this by reference to this variable 
obj.property = 'new value' 
console.log(another) // expected: 'new value' 

, 그러나 이것은 내가 새로운 변수에 속성을 할당 할 때부터 도움이되지 않습니다, getter가 호출되어 실제 값을 반환합니다. Node.js EventEmitter를 사용하거나 속성 대신 함수 호출을 사용하여 쉽게 구현할 수있을 것이라고 확신하지만, 실제로 놓친 것 같은 언어 기능을 찾고 있습니다. 또는 이러한 작업을 수행하는 확실하고 쉬운 방법입니다. 소지품.

감사합니다.

+0

가능한 중복 (HTTP를 : //stackoverflow.com/questions/10231868/pointers-in-javascript) –

+1

자바 스크립트에는 아무 것도 없습니다. 'another'를 업데이트하고 싶다면 다시 정의하십시오. – Lewis

답변

0

는 자바 스크립트에서 객체는 값으로 refernce를하지만 프리미티브 (문자열, 숫자 및 부울)에 의해 전달됩니다 [? 자바 스크립트에서 포인터]의

var obj = { property: 'a value' }; 
var another = obj.property; // value 
obj.property = 'new value'; 
console.log(another); // gives a value 

그러나

var obj = { property: 'a value' }; 
var another = obj; // reference 
obj.property = 'new value'; 
console.log(another.property); // gives new value 
+0

네, 저도 압니다. 저는 프리미티브를 가지고있는 변수에 대한 참조를 얻는 방법을 찾고 있습니다. 그래서 완전히 새로운 값을 변수에 할당 할 때, 나는 여전히 그 참조를 잃지 않습니다. –

+0

음, 원시 객체 대신 객체를 사용할 수 있습니까? –

+0

@RobertRossmann 자바 스크립트에는 변수에 대한 포인터 인 포인터가 없습니다. 질문에서 언급 한 것처럼 ['get' /'set'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty)는 가장 유사한 것입니다 현재이 언어로 지원됩니다. –