js setTimeout 매개 변수 전달 사용 안내

window.settimeout()방법 은 매개 변 수 를 가 진 함 수 를 호출 하 는 두 가지 방법 이 있 습 니 다.그리고 브 라 우 저 상태 표시 줄 은 매개 변수 가 잘못 되 었 음 을 알려 줍 니 다.많은 친구 들 이 setTimeout 테이프 대상 을 사용 하 는 방법 순환 을 실현 하 는 방법 을 많이 썼 다.예 를 들 어
 
function init(){
var url = "<%=basePath%>fetchwater.do?method=searchRealWater&xzqh=" + "<%=xzqh%>" + "&rand="+Math.random();
//alert(url);
window.setTimeout(function(){ searchJDWater(url);},100);
}
이 예 에서 setTimeout 용법,setTimeout(리 셋 함수,시간,매개 변수 1,...,매개 변수 n).또 예 를 들 어 2:
 
function init(){
var url = "<%=basePath%>fetchwater.do?method=searchRealWater&xzqh=" + "<%=xzqh%>" + "&rand="+Math.random();
//alert(url);
window.setTimeout(“searchJDWater(”+url+“)”, 100);
}
이 예 에서 window.setTimeout 을 다시 불 러 오고 apply 로 앞의 function 을 되 돌려 줍 니 다.예 1:
 
function init(){
var url = "<%=basePath%>fetchwater.do?method=searchRealWater&xzqh=" + "<%=xzqh%>" + "&rand="+Math.random();
//alert(url);
window.setTimeout(searchJDWater(url), 100);
}
마우스 가 이 단 추 를 눌 렀 을 때 test()를 호출 하여'1'을 전달 합 니 다.화면 에 1000 밀리초(1 초)마다 대화 상 자 를 팝 업 하여 1 을 표시 합 니 다.문제 없습니다.예 2:
 
  <script language="javascript">
  var __sto = setTimeout;
  window.setTimeout = function(callback,timeout,param)
  {
  var args = Array.prototype.slice.call(arguments,2);
  var _cb = function()
  {
  callback.apply(null,args);
  }
  __sto(_cb,timeout);
  }
  //
  function aaaa(a)
  {
  alert(a);
  }
  function aaaaa(a,b,c)
  {
  alert(a + b + c);
  }
  var a = new Object();
  window.setTimeout(aaaa,1000,a);
  window.setTimeout(aaaaa,2000,a,6,7);
  </script>
이 곳 의 this 는 document.getElement ById("btnTest")로 이해 할 수 있 습 니 다.마우스 가 이 단 추 를 눌 렀 을 때 test 함수 에 전달 하 는 대상 입 니 다.화면 에[object]를 표시 하고 1000 밀리초 후에 두 번 째 를 표시 하지 않 습 니 다.문제 가 발생 했 습 니 다.브 라 우 저 왼쪽 에서 스 크 립 트 오 류 를 보고 합 니 다.자세 한 정보 에는 object 가 정의 되 지 않 았 습 니 다.예 3:
 
  <script type="text/javascript">
  var _st = window.setTimeout;
  window.setTimeout = function(fRef, mDelay) {
  if(typeof fRef == 'function'){
  var argu = Array.prototype.slice.call(arguments,2);
  var f = (function(){ fRef.apply(null, argu); });
  return _st(f, mDelay);
  }
  return _st(fRef,mDelay);
  }
  function test(x){
  alert(x);
  }
  window.setTimeout(test,1000,'fason');
  </script>
setTimeout 의 test()는 매개 변 수 를 가지 고 있 지 않 습 니 다.처음으로[object]를 표시 하고 1000 밀리초 후에 undefined 를 표시 합 니 다.변 수 는 할당 되 지 않 았 습 니 다.즉,이 방식 으로 매개 변 수 를 가 진 방법 순환 을 실현 할 수 있 지만 매개 변 수 는 소각 되 었 습 니 다.사실 이것 은 매우 간단 하면 실현 할 수 있 으 니,그렇게 긴 코드 를 써 서 실현 할 필요 가 없다.예 4:
 
  <script language="javascript">
  function test(obj)
  {
  alert(obj);
  setTimeout("test("+ obj +")",1000);
  }
  </script>
  <input id="testButton" type="button" onclick="test(1)">
주의 하 세 요.setTimeout 의 test 에 있 는 인자 obj 앞 뒤의 따옴표 가 있 습 니 다.따옴표 안에 작은 따옴표 가 있 습 니 다.이렇게 setTimeout("test(작은 따옴표+obj+작은 따옴표)")이 있 습 니 다.됐 죠?1000 밀리초 간격 으로 화면 에[object]를 표시 하여 대상 을 전달 하 는 데 성공 하 였 습 니 다.――――――――――――――――의 미―제4 조 가 마지막 으로 전해 지 는 것 은'대상'의 문자열 인'object'이지 최초의 대상 객체 가 아니다.그냥 obj 타 입 이 야.전달 대상 의 역할 을 하지 못 했다.코드 테스트 가능:팝 업 대상 id
 
  <script language="javascript">
  function test(obj)
  {
  alert(obj);
  setTimeout("test("+ obj +")",1000);
  }
  </script>
  <input id="btnTest" type="button" onclick="test(this)">

좋은 웹페이지 즐겨찾기