JS 기본 함수 호출 - call, apply, bid 방법 및 응용

5670 단어 자바 script
call () 과 apply () 는 모두 함수 대상 의 방법 으로 함수 대상 을 통 해 호출 되 어야 합 니 다. call 과 apply 를 호출 할 때 대상 을 하나의 매개 변수 로 지정 할 수 있 습 니 다. 이때 이 대상 은 함수 가 실행 하 는 this 가 될 것 입 니 다.
call()
  • call 방법 은 실 참 을 대상 에 게 한 번 에 전달 할 수 있다
  • call 은 이 함수 의 this 지향 을 바 꿀 수 있 고 계승 실현
  • 에 사용 할 수 있 습 니 다.
    function Father(userName){
         
    	this.username = userName;
    }
    
    function Child(userName){
         
    	// call    this   , Father this  child this  ,     ,
    	// father     this    child,          。
    	Father.call(this, userName)
    }
    
    
  • 매개 변수 (obj, 실 삼 1, 실 삼 2...)
  • apply()
  • apply 방법 은 매개 변 수 를 배열 에 밀봉 하여 전달 해 야 한다
  • .
  • apply 도 함수 내부 의 this 지향
  • 을 바 꿀 수 있 습 니 다.
  • 매개 변수 (obj, [매개 변수 1, 매개 변수 2...])
  • //             
    arr = [1,4,3,6,2];
    //   apply,   Math,  max  ,    
    Math.max.apply(Math,arr);
    

    bind()
  • 함 수 를 호출 하지 않 습 니 다
  • 함수 의 this 지향
  • 을 변경 합 니 다.
  • bid 방법 은 실제 개발 에서 가장 많은 응용 을 할 수 있 습 니 다. 이 함 수 를 즉시 실행 할 필요 가 없 지만 이 함수 의 this 지향 을 바 꿔 야 합 니 다.예 를 들 어 한 시간 은 냉각 시간 이 필요 하고 버튼 을 누 르 면 1 분 후에 다시 문 자 를 보낸다.
  • // bind   
    function Father(){
         };
    function fun(){
         
    };
    //          this      ,          
    var f = fn.bind(Father)
    f();
    

    예시
    //                 
    //       this    window
    btn.onclick = function(){
         
    	this.disabled = true;
    	setTimeout(function(){
          
    		//   this    btn
    		this.disabled = false;
    	}.bind(this),3000);\
    }
    

    call, apply, bind 총 결
    같은 점: 함수 내부 의 this 지향 점 을 바 꿀 수 있 습 니 다:
  • call 과 apply 는 함 수 를 호출 할 수 있 고 bid 는 안 됩 니 다
  • call 과 apply 전달 매개 변수 가 다 릅 니 다
  • 주요 응용: 1. call 은 항상 계승 2. apply 는 배열 과 관련 이 있 습 니 다. 예 를 들 어 항소 의 최대 최소 값 3. bid 는 함 수 를 호출 하지 않 고 타이머 로 this 지향 을 바 꿀 수 있 습 니 다.
    arguments
    함수 가 호출 될 때 브 라 우 저 는 두 호수 마다 두 개의 함 축 된 인 자 를 전달 합 니 다: 하나의 this, 하나의 arguments
  • 함수 의 상하 문 대상 this
  • 실 삼 을 봉 인 된 대상 arguments argument 는 클래스 배열 대상 입 니 다. 우 리 는 형 삼 을 정의 하지 않 아 도 arguments 를 통 해 실 삼 을 사용 할 수 있 습 니 다: arguments [0]..
  • 좋은 웹페이지 즐겨찾기