2013-06-02 7 views
2

변수를 클로저 함수에 바인딩하는 방법이 궁금합니다. Javascript에서 클로저 변수 바인딩하기

여기에 코드를 참조하십시오 : 날이 코드를 사용하자 평가의 호출 후
function makeCall(callback) { 
var fs = callback.toString(); 
var stored_callback = eval('(' + fs + ')').bind({ }); 
stored_callback(); 
} 

function foo(id) { 
makeCall(function() { 
    console.log(id); 
}); 
} 
foo('bar'); 

가, 호출 된 함수는 ID가 폐쇄 예정대로해야으로 도달 할 수 없다.

내 질문은 toString을 호출하기 전에 어떻게 든 저장 및 호출되고 호출에 바인드되도록 클로저의 '컨텍스트'를 검색 할 수 있습니까?

+2

'id'와'name'은 'obj.do'에 전달하는 함수로 액세스 할 수 있습니다. callback.bind (bobInstance);에서'콜백 (callback) '이란 무엇입니까?? 더 좋은 예제를 제공해야합니다. –

+0

맞아요, 미안 해요. – user1018074

+0

좋아, 지금 말하려고하는 것을 이해할 수 있지만 문제는 볼 수 없습니다. http://jsfiddle.net/xRLNM/. 전달 된 콜백을 바인드하지만 여전히 액세스 할 수 있습니다. 'id'. 당신은 "t"을 바꿀까요? 콜백을 다른 객체에 바인딩 할 때'id'와'name' 값을 사용합니까? 실제 문제를 보여주기 위해 http://jsfiddle.net/ 데모를 직접 제공해야 할 수도 있습니다. –

답변

1

Felix King의 대답에 따라 수행 할 수 없습니다. : 너무 좋지 않아요. 그냥 통화를 저장하고 나중에 일종의 지속성 수준을 위해 나중에 실행했습니다.이 방법은 컴퓨터가 다시 시작되었거나 다른 방법으로도 상호 작용을 할 수 있습니다 ... 유일한 방법은 embedder를 사용하지 않는 것입니다. 매개 변수는 '클로저'에서 제공됩니다. 어쨌든 고마워요.

관련 문제