Function.prototype.apply

문법

function.apply(thisArg, [argsArray])


설명

  1. thisArgthis 객체에 바인딩하고 전달 받은 인자를 arguments 에 설정한 후 해당 함수를 호출한다
  2. arguments배열로 전달한다


예시

Math.max(5, 6, 2, 3, 7);    // 7

// 아래와 같이 배열을 인자로 전달해서 사용할 수 있다
var numbers = [5, 6, 2, 3, 7];
Math.max.apply(null, numbers);  // 7


Function.prototype.call

문법

function.call(thisArg, arg1, arg2, ...)


설명

  1. thisArgthis 객체에 바인딩하고 전달 받은 인자를 arguments 에 설정한 후 해당 함수를 호출한다
  2. arguments순서대로 전달한다


Function.prototype.bind

문법

function.bind(thisArg, arg1, arg2, ...)


설명

  1. 첫번째 인자를 this 에 바인딩하고, 두번째 인자부터 arguments 를 순서대로 전달한다. 전달된 arguments 를 미리 부분적용한 함수를 리턴한다.
  2. 이후 함수 호출 시 인자를 추가로 전달할 경우 미리 전달받은 arguments 뒤에 concat 된다


예시

function test(){
    return this.a;
};

var a = 1;
test();     // 1        // 전역변수 a를 리턴

var obj = {a:2};
obj.func = test;
obj.func();     // 2        // obj의 a속성을 리턴

obj.func = test.bind({a:3});
obj.func();     // 3          // 앞서 bind 호출시 인자로 받은 객체의 a속성을 리턴 


Ref.