, x = { greet: hi }
저장 기준에 객체 참조는 x
실제 값 (y=10
) 다음 코드왜 첫 번째 변수가 최초의 개체를 참조하는 변수를 유지하는 두 번째 변수는 첫 번째가 새 개체를 참조 할 때 업데이트되지 않습니다. 이해 된 바와 같이
, console.log(y)
{greet: "hi"}
출력을 길게 프리미티브 타입 달리 { greet:
하이 }
개체한다.
왜 x
OBJ 심판이 라인 x = {greet: 'hello'};
에 새로운 객체가 생성되고 있기 때문에 x = {greet: 'hello'}
var x = {greet: 'hi'};
var y = x;
x = {greet: 'hello'};
console.log(y);
console.log(x)
당신이 묘사하는 것은'y = x'가'y'와'x'의 * alias *를 만드는 것을 의미합니다. 즉 그것들은 실제로 모두 동일한 변수입니다. 그것이 작동하는 방식이 아닙니다. 당신은 단지'x'에 저장된 객체 참조를'y'에 할당하는 것뿐입니다. – deceze
@deceze 복제본인지 잘 모르겠습니다. – Rajesh
@OP, 개체는 참조를 사용하여 할당/복사됩니다. 즉,이 메모리 위치에서 객체의 메모리 위치와 액세스 속성을 교환하고 있다는 뜻입니다. 따라서 하나의 변수에서 속성을 변경하는 것은 다른 변수에서 반영됩니다. 이제 당신이'x = {greet : 'hello'};'를 할 때, 당신은 참조 자체를 대체 할 것입니다. 이제 변수는 다른 위치에 대한 포인터를 보유하고 이전 위치의 객체는 그대로 유지됩니다. 아무도 그것을 참조하지 않으면 GC가 제거합니다. – Rajesh