call(), apply(), bind()

2156 단어
4
  • 선언: 모든 함수는 계승되지 않은 두 가지 방법을 포함한다. 그것이 바로 apply()와call()이다.이 두 방법의 용도는 모두 특정한 작용역에서 함수를 호출하는 것으로 실제로는 함수 체내의this 대상의 값을 설정하는 것과 같다

  • apply()


    ply () 방법은 두 개의 매개 변수를 수신합니다. 하나는 실행 함수의 작용역이고, 다른 하나는 매개 변수의 그룹입니다.두 번째 매개변수는 Array 인스턴스 또는 arguments 객체일 수 있습니다.예를 들면 다음과 같습니다.
    function sum(num1, num2) {
         return num1 + num2
    }
    function callSum1(num1, num2) {
          return sum.apply(this, arguments)
    }
    function callSum2(num1, num2) {
         return sum.apply(this, [num1, num2])
    }
    console.log(callSum1(10, 10))      // 20
    console.log(callSum2(10, 10))      // 20
    

    call()


    call() 방법은 apply() 방법과 작용이 같고 그 차이는 단지 파라미터를 수신하는 방식이 다르다는 것이다.전자는 매개 변수를 하나하나 열거해야 하고 후자가 수신하는 매개 변수는 모두 하나의 수조에 써야 한다. 예:
    function sum(num1, num2) {
        return num1 + num2
    }
    function callSum(num1, num2) {
       return sum.call(this, num1, num2)
    }
    console.log(callSum(10, 10))    // 20
    

    만약arguments 대상이나 그룹 파라미터를 직접 전송하려고 한다면 apply () 방법을 사용하십시오. 그렇지 않으면call () 방법을 사용하는 것이 비교적 편리합니다.사실상 전달 매개 변수는 이 두 가지 방법의 용무가 아니다. 그들이 진정으로 강한 것은 함수를 확장하여 운행하는 작용역을 넓힐 수 있다는 것이다.예를 들면 다음과 같습니다.
    window.color = 'red'
    var o = { color: 'blue' }
    function sayColor() {
        console.log(this.color)
    }
    sayColor()
    sayColor.call(this)        // red
    sayColor.call(window)  // red
    sayColor.call(o)            // blue
    

    앞에서 이것은 모두sayColor 이 방법의 운행 환경을 window로 바꾸었기 때문에 결과는 레드이다. 마지막으로sayColor 이 방법의 운행 환경을 o 대상으로 바꾸는 것은 아래와 같다.
    sayColor.call(o) 
    var o = {
        color: 'blue',
         sayColor: function () {
           console.log(this.color)
       }
    }
    

    위 코드를 통해call()과 apply() 방법은 함수의 운행 환경을 바꾸는 것이다.

    bind()


    ECMAScript5는 또한 bind() 방법을 정의합니다.이 방법은 함수의 실례를 만들 것입니다. 이this 값은bind () 함수에 연결된 값입니다.예:
    window.color = 'red'
    var o = { color: 'blue' }
    function sayColor() {
         console.log(this.color)
    }
    var obj = sayColor.bind(o)
    console.log(obj)         //  blue
    

    위 코드는 bind () 방법을 보여줍니다.sayColor 함수를 o 대상에 연결하는 것입니다. 귀속만 하고 실행하지 않으며 마지막 줄만 실행합니다.
    총괄: 위의 세 가지 방법은 모두 함수의 운행 환경을 바꾸는 것이다.

    좋은 웹페이지 즐겨찾기