0
bind()는 원래 함수의 복사본을 반환해야합니다. 그러나이 복사본을 콜백으로 전달하면 원래 함수가 호출됩니다. . - (크롬, 파이어 폭스와 가장자리 테스트 어디 추론에 내 오류가Javascript : 이벤트가 제출되지 않았습니다. bind (..) - 콜백 복사본 :/
<html><body>
<script>
// new api to wrap these nested Cordova callbacks ..
ScanDir = function (sPath, rCallback, iStep){
yes = _Yes.bind(rCallback); // should return a copy/newInstance of _Yes !?!
yes.iStep = iStep;
// simulate a cordova callback ..
document.getElementById("test").addEventListener("click", yes);
}
_Yes = function YES(o){
// this is not the new instance returned by bind(..):
alert(_Yes.iStep); // = undefined
alert(YES.iStep); // = undefined
alert(arguments.callee.iStep); // = undefined
alert(yes.iStep); // wrong, 'yes' must not be global...
}
</script>
<span id="test">click here to trigger callback</span>
<script>
// code that uses my new api..
function Go(v){
if (!v.iStep) return ScanDir(v,Go,1);
alert("continue with switch("+v.iStep+")");
}
Go("Music/");
</script>
</body></html>
디버그 여기에 코드 : http://www.robosoft.de/forums/bug.htm
아니, 바인드() 새로운 함수를 만듭니다 ... 그것은 기능을 결합,
그리고 아니, 바인드는 새로운 함수를 생성하지 않습니다 당신은에 액세스 할 수 있습니다. org/ko/docs/웹/JavaScript/Reference/Global_Objects/Function/bind. 그리고 이미 마지막'alert (yes.iStep);는 함수 객체'yes' (콜백으로 제출)가 다른 함수 객체라는 것을 증명합니다. 'yes '가 콜백으로 제공되었을 때'_Yes = YES'가 호출되는 이유는 무엇입니까 ??? 네, 솔직히 말씀 드렸습니다.'_Yes.bind ({ "rCallback": rCallback, "iStep": iStep})'- 아직도 주어진 예제의 이상한 행동을 이해하고 싶습니다. –
@bornloser "설명"섹션을 읽었습니까? –
글쎄, 나는 의미를 알지 못한다. ** ** 설명 : ** bind() 함수는 새로운 바운드 함수 (BF)를 만든다. BF는 원본 함수 개체를 래핑하는 이국적인 함수 개체 (ECMAScript 2015의 용어)입니다. BF를 호출하면 일반적으로 랩핑 된 함수가 실행됩니다. _/내 예제는 두 개의 별개 함수 optjects 인'yes'와'YES'를 명확하게 증명합니다. 'yes'가 콜백으로 주어 지지만'YES'가 호출됩니다. 나는 이것이 이상하다고 생각한다. –