2010-05-31 6 views
3

이는 this을 얻을 수 있다는 것을 함수의 caller가 IE를 지원하는 방식으로 인수에 this를 전달뿐만 아니라없이 자바 스크립트 에서 호출되었습니다 Firefox/Chrome 외 예를 들어점점 "이"함수의 호출자는 자바 스크립트에서 호출되었다

:

var ob = { 
    callme: function() { 
     doSomething(); 
    } 
} 
ob.callme(); 

function doSomething() { 
    alert(doSomething.caller.this === ob); // how can I find the `this` that 
              // `callme` was called with 
              // (`ob` in this case) without 
              // passing `this` to `doSomething`? 
} 

나는 그렇지 않은 의심하기 시작 해요,하지만 난뿐만 아니라 내 코드를 훨씬 짧고 읽기 쉽게 만들어 주겠다고로 요청할 수 있습니다 생각했다.

+1

@stagas :'__parent__'이는 * 변수 객체 * (함수의 범위 체인의 상위 개체)를 노출하는 방법, 실제로에만 코뿔소 잘 작동하는 모질라 확장이다, 여기서 변수, 인수 및 함수 선언이 바인딩됩니다. – CMS

답변

3

음, 인수로 값을 전달 기술적으로없이, 내가 생각할 수있는 가장 가까운는 doSomething 함수의 this 값을 설정하는 것입니다. 당신이 그것을 내부의 this 값이 글로벌 객체를 참조 doSomething();과 같이 호출, 그리고 너무 유용 보통이 아니다 경우 doSomething 기능이 기본적으로 모든 개체에 바인딩되지 않기 때문에

...

들어 예 :

var ob = { 
    callme: function() { 
    doSomething.call(this); // bind the `this` value of `doSomething` 
    } 
}; 

function doSomething() { 
    alert(this === ob); // use the bound `this` value 
} 

ob.callme(); 
+0

그것은 어떻게 든 그것을 지나치지 않고 할 수없는 것처럼 보입니다. 어쨌든 고마워요. 아무도 오늘 나중에 해결하지 못하면 받아 들일 것입니다 .-) – cryo