2012-11-21 3 views
0

특정 변수가 변경된시기를 결정하고 싶습니다. 내가 액세스 할 수있는 모든 개체의 모든 속성을 볼 수 this code를 사용하여 큰 성공을했다, 그러나 그것은 다음과 같이 선언 된 변수에 사용할 수있는JavaScript의 익명 함수에서 변수보기

$(     // line 1 
    function(){  // line 2 
    var A;   // line 3 
    // ... lots of code that uses A as if it were a global. I wanna see what part of this code sets A ... 
    }     // line 5999 
);     // line 6000 

은 확실히 Awindow의 속성으로 끝나지 않는다? : . 아마도 2 ~ 5999 라인에 걸쳐있는 익명의 함수 객체의 속성일까요? 그래서 함수 이름을 지정하면 참조 할 수 있습니다. A var/prop에 어쨌든 watch을 사용할 수 있습니까?

다른 방법으로 var가 설정되는 위치를 알아낼 수 있습니까?

+0

* 아무 것도 (적어도 코드에 액세스 할 수있는 것은 아님) * 속성입니다. –

+0

그렇게 보입니다. http://docstore.mik.ua/orelly/webprog/jscript/ch04_06.htm에 따르면 "호출 객체"에 대한 참조가 필요합니다. 그것을 어떻게 얻을 수 있습니까? –

+0

할 수 없습니다. 그것은 함수의 실행 컨텍스트에서 사용되는 내부 객체입니다. 그것은 당신의 코드에서 사용할 수 없습니다. –

답변

0

변수가 객체 속성이 아니기 때문에 그 변수에 Object.prototype.watch을 사용할 수 없습니다. 에 관계없이 그 범위 (당신이 언급 한 익명의 기능입니다).

디버깅을 위해이 작업을 수행하려는 경우 브라우저의 개발자 도구에서 볼 수 있다고 생각합니다.

+0

Webkit watch 식을 사용하려고하면 올바른 범위에 있지 않습니다 (콘솔에 내용을 입력하기위한 매크로보다 강력하지는 않습니다) –

+0

Firefox + Firebug를 사용해보십시오. 스크립트 탭에서 소스 코드의 모든 변수를 볼 수 있습니다. 웹킷에서 어떻게해야할지 모르겠다. 아마'debugger' 문을 사용하여 소스 코드에 중단 점을 설정해야 할 것이다. – bfavaretto

+0

Firefox에서 사이트가 작동하지 않습니다. ( –

1

약간 미미한 것처럼 보일 수 있지만 약간 수정하면 변수 포인터를 볼 수 있습니다.

(function() { 
    window.ox = x = {}; 

    x.y = 5; 
})(); 

alert(ox.y); 

이것은 전역 영역으로 끌어오고 전역 변수 ox에서 변수 x를 관찰 할 수 있어야합니다.

+0

우수 해킹. –

+0

그래서 이것을 적용하려고했지만 작동하지 못했습니다 .x가 다시 할당 될 때 시청 한 동영상이 응답하지 않으면 'Window.ox'가 표시됩니다. –

관련 문제