가 어디 잘못 갈거야이 함께가는 끝났다?
당신은 obj
변수에 새로운 참조를 할당하고,하지만 당신의 console
코드가 무엇을 바라보고 있는지 아니다. 반환하려는 객체의 obj
속성의 참조를 찾고 있습니다.
myModule.obj
은 obj
var에 대한 참조가 아닙니까?
이 번호 :
return {
obj: obj
// ...
}
복사 변수 및 속성 사이에 링크가없는 그 후에 재산 변수로부터 오브젝트 레퍼런스.
+−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−+
| +−−−−−−−−−−−−−−−−−−−+ |
+−>| execution context | |
+−−−−−−−−−−−−−−−−−−−+ |
| obj: Ref11235 |−−−−−+ |
+−−−−−−−−−−−−−−−−−−−+ | |
| +−−−−−−−−+ |
+−−−−−−−−−−−−−−−−−−−−−+ +−−>| object | |
| variable "myModule" | | +−−−−−−−−+ |
+−−−−−−−−−−−−−−−−−−−−−+ | |
| obj: Ref11235 |−−−+ +−−−−−−−−−−−−−−−−−−−−−−−+ |
| updateObj: Ref88452 |−−−−−−>| function | |
+−−−−−−−−−−−−−−−−−−−−−+ +−−−−−−−−−−−−−−−−−−−−−−−+ |
| environment: Ref71423 |−−−+
| [[code] |
+−−−−−−−−−−−−−−−−−−−−−−−+
Ref11235이 객체 참조의 값에 대한 단지 plaeholder입니다 : 당신이 (생략 일부 관련이없는 세부 사항) 메모리에 무엇을 당신이 당신의 CALLTO updateObj
전에 myModule
을 만든 후
는
, 여기에 그 대상. (유사 Ref88452 함수에 대한 개체 참조이고 Ref71423는 배후 "EnvironmentRecord"는 updateObj
기능하므로 그 환경의 obj
변수를 갱신 할 수에 대한 참조가 객체에 객체 참조.)
후 updateObj
에 전화, 당신은 myModule
의 obj
속성에 대한 참조를 변경했습니다,하지만 그건 obj
변수에 참조 변경되지 않습니다있는 지금,
+−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−+
| +−−−−−−−−+ |
| +−−−−−−−−−−−−−−−−−−−+ +−−>| object | |
+−>| execution context | | +−−−−−−−−+ |
+−−−−−−−−−−−−−−−−−−−+ | |
| obj: Ref11235 |−−−−−+ +−−−−−−−−−−−−+ |
+−−−−−−−−−−−−−−−−−−−+ | object | |
+−−>+−−−−−−−−−−−−+ |
+−−−−−−−−−−−−−−−−−−−−−+ | | foo: "bar" | |
| variable "myModule" | | +−−−−−−−−−−−−+ |
+−−−−−−−−−−−−−−−−−−−−−+ | |
| obj: Ref65243 |−−−+ +−−−−−−−−−−−−−−−−−−−−−−−+ |
| updateObj: Ref88452 |−−−−−−>| function | |
+−−−−−−−−−−−−−−−−−−−−−+ +−−−−−−−−−−−−−−−−−−−−−−−+ |
| environment: Ref71123 |−−−+
| [[code] |
+−−−−−−−−−−−−−−−−−−−−−−−+
유일한 변화는 myModule.obj
의 값을 새로운 객체를 나타냅니다.
대신 재산 업데이트 할 updateObj
을 변경하는 경우 :
updateObj: function(newObj) {
this.obj = newObj;
}
을 ... 당신은 당신이 기대하는 결과를 볼 수 있습니다. (어떤 점에서 obj
변수를 완전히 제거하는 것이 합리적 일 수 있습니다.)
내가 잘못 생각했을 수도 있지만 빠른보기에서 괄호가 꺼져있을 수 있습니다. '(function() {...})()이되어서는 안됩니까? –
어딘가에'예기치 않은 토큰}'에 구문 오류가 있습니다. –
@SpencerWieczorek 예, 'obj = newObj', 여기 쉼표는';'이어야합니다. _Ignoring 구문 errors_ – Tushar