apply call bind callback

agnusdei·2023년 7월 13일
0

apply, call, bind는 JavaScript의 함수 프로토타입 메서드입니다. 이 세 가지 메서드는 함수를 호출하고 실행하는 방식을 제어하며, 함수의 this 값을 설정하거나 인수를 전달하는 데 사용됩니다. 각각의 메서드를 상세히 분석해보겠습니다.

  1. apply()

    • apply() 메서드는 함수를 호출하면서 this 값을 설정하고, 인수를 배열로 전달하는 방식입니다.

    • 구문: function.apply(thisArg, [argsArray])

    • thisArg: 함수 내부에서 this로 사용될 객체입니다.

    • argsArray (선택적): 함수에 전달할 인수들을 배열로 지정합니다.

    • 예제:

      function greet(name, age) {
        console.log(`Hello, ${name}! You are ${age} years old.`);
      }
      
      greet.apply(null, ['John', 25]);
      // 출력: Hello, John! You are 25 years old.
  2. call()

    • call() 메서드는 함수를 호출하면서 this 값을 설정하고, 개별 인수로 전달하는 방식입니다.

    • 구문: function.call(thisArg, arg1, arg2, ...)

    • thisArg: 함수 내부에서 this로 사용될 객체입니다.

    • arg1, arg2, ...: 함수에 개별적으로 전달할 인수들입니다.

    • 예제:

      function greet(name, age) {
        console.log(`Hello, ${name}! You are ${age} years old.`);
      }
      
      greet.call(null, 'John', 25);
      // 출력: Hello, John! You are 25 years old.
  3. bind()

    • bind() 메서드는 함수를 호출하지 않고, 새로운 함수를 생성하면서 this 값을 설정하고, 초기 인수를 지정하는 방식입니다.

    • 구문: function.bind(thisArg, arg1, arg2, ...)

    • thisArg: 함수 내부에서 this로 사용될 객체입니다.

    • arg1, arg2, ...: 초기 인수로 설정될 값들입니다.

    • 반환값: this 값과 초기 인수가 설정된 새로운 함수입니다.

    • 예제:

      function greet(name, age) {
        console.log(`Hello, ${name}! You are ${age} years old.`);
      }
      
      const greetJohn = greet.bind(null, 'John');
      greetJohn(25);
      // 출력: Hello, John! You are 25 years old.

apply, call, bind는 함수의 호출과 관련된 유연성을 제공합니다. 이들 메서드를 사용하여 this 값을 설정하고, 인수를 전달하면서 함수를 실행하거나, 필요한 상황에 따라 새로운 함수를 생성할 수 있습니다. 이를 통해 함수를 동적으로 조작하고, 다른 객체의 메서드로 사용하거나 다양한 호출 패턴을 구현할 수 있습니다.

apply, call, bind 함수는 콜백 함수(callback function)와 관련하여 유용하게 사용될 수 있습니다. 콜백 함수는 다른 함수의 인자로 전달되는 함수로서, 해당 함수가 완료되었을 때 실행되는 함수입니다. 이러한 콜백 함수를 사용할 때 apply, call, bind 함수를 활용하여 this 값 및 인수를 제어할 수 있습니다.

  1. apply(callback, thisArg, argsArray)

    • apply 함수는 callback 함수를 thisArg 객체를 사용하여 호출하고, argsArray 배열을 인수로 전달합니다.

    • 콜백 함수의 this 값을 특정 객체로 설정하고, 필요한 인수들을 배열로 전달하여 실행할 수 있습니다.

    • 예제:

      function greet(name) {
        console.log(`Hello, ${name}!`);
      }
      
      function sayHello(callback, name) {
        callback.apply(this, [name]);
      }
      
      sayHello(greet, 'John');
      // 출력: Hello, John!
  2. call(callback, thisArg, arg1, arg2, ...)

    • call 함수는 callback 함수를 thisArg 객체를 사용하여 호출하고, 개별적인 arg1, arg2, ... 인수를 전달합니다.

    • 콜백 함수의 this 값을 특정 객체로 설정하고, 필요한 인수들을 개별적으로 전달하여 실행할 수 있습니다.

    • 예제:

      function greet(name) {
        console.log(`Hello, ${name}!`);
      }
      
      function sayHello(callback, name) {
        callback.call(this, name);
      }
      
      sayHello(greet, 'John');
      // 출력: Hello, John!
  3. bind(callback, thisArg, arg1, arg2, ...)

    • bind 함수는 callback 함수에 thisArg 객체와 초기 인수들을 설정한 새로운 함수를 반환합니다.

    • 반환된 새로운 함수는 필요한 시점에 실행될 수 있으며, this 값과 초기 인수들이 고정됩니다.

    • 예제:

      function greet(name) {
        console.log(`Hello, ${name}!`);
      }
      
      const greetJohn = greet.bind(this, 'John');
      greetJohn();
      // 출력: Hello, John!

위 예제에서 apply, call, bind 함수를 사용하여 콜백 함수 greet를 호출하면서 this 값을 설정하고 인수를 전달할 수 있습니다. 이를 통해 콜백 함수와 관련된 다양한 시나리오에서 더욱 세밀한 제어를 할 수 있습니다.

0개의 댓글