콜 및 apply 방법

3315 단어
모든 함수에는 계승되지 않은 두 가지 방법이 있습니다: apply ()와call () 방법입니다.이 두 방법의 용도는 모두 특정한 작용역에서 함수를 호출하는 것으로 실제로는 함수 체내의this 대상 값을 설정하는 것과 같다.
apply () 방법은 두 개의 매개 변수를 수신합니다.
  • 하나는 그 중에서 함수를 운행하는 작용역
  • 또 다른 매개 변수 그룹은Array 실례일 수도 있고arguments 대상일 수도 있다
  • function sum(num1, num2){
        return num1 + num2;
    }
    
    function callSum1(num1, num2){
        return sum.apply(this, arguments);     //   arguments 
    }
    
    function callSum2(num1, num2){
        return sum.apply(this, [num1, num2]);
    }
    

    위의 예에서callSum1()은sum() 함수를 실행할 때this를 작용역으로 전송했다(전역 작용역에서 호출되었기 때문에 전송된 것이 window 대상이다)와arguments 대상이다.callSum2 역시sum() 함수를 호출하지만,this와 하나의 매개 변수 그룹을 전달합니다.
    call() 방법은 apply() 방법과 작용이 같고 수신 매개 변수의 차이에 있다.call() 방법에 있어 첫 번째 파라미터는 작용역에 변화가 없고 변화된 것은 나머지 파라미터가 직접 전달된 것이다.다시 말하면 콜() 방법을 사용할 때 함수에 전달되는 매개 변수는 다음과 같이 그룹으로 열거해야 한다.
    function sum(num1, num2){
        return num1 + num2;
    }
    
    function callSum(num1, num2){
        return sum.call(this, num1, num2);
    }
    
    alert(callSum(10, 10));     // 20

    실제로 apply()와call()는 매개 변수만 전달하는 것이 아니라 그들이 진정으로 강한 것은 함수를 확장하여 운행하는 역할 영역이다.
    window.color = "red";
    var o = {
        color : "blue"
    };
    
    function sayColor(){
        alert(this.color);
    }
    
    sayColor();         // red
    sayColor.call(this);    // red
    sayColor.call(window);  // red
    sayColor.call(o);   // blue

    sayColor는 전역 함수로 정의되어 있으며, 전역 역할 영역에서 호출할 때 'red' 를 표시합니다.this에 대한 것이기 때문입니다.color의 값을 구하면 window로 변환됩니다.color의 값.그리고sayColor.call(this)과sayColor.콜 (window) 은 전역 작용에서 함수를 현저하게 호출하는 두 가지 방식이며, 결과는 당연히 '레드' 를 표시합니다.하지만 SayColor를 실행합니다.콜 (o) 시 함수의 실행 환경이 달라집니다. 이 때 함수 체내의this 대상이 o를 가리키기 때문에 '블루' 를 표시합니다.
    콜이나 apple () 를 사용하여 역할 영역을 확장하는 가장 큰 장점은 대상이 방법과 어떠한 결합 관계도 필요 없다는 것이다.

    좋은 웹페이지 즐겨찾기