javascript

클로저 용법 - partial application

tues 2023. 10. 27. 01:36

partial applicatoin(부분 적용 함수)

- 기본 함수의 매개변수 중 일부를 미리 채워둔 상태의 함수

- 커링된 함수를 일부 단계까지만 호출하고 함수를 반환받으면 나중에 반환받은 함수에 나머지 인자를 전달해서 실행

 

var sum = function (x, y, z) {
  return x + y + z;
};

//function에 partial기능을 추가
//sum.partial 함수 만듦
//prototype, this, arguments, 전개여산자, 고차함수, apply, closure

Function.prototype.partial = function (...preArgs) {
  var fn = this;
  var preArgs = [...arguments]; //[20,80]을 배열로 만들어서 저장하고
  return function () {
    //sum100이 호출될때 호출되는 함수임
    //[20,80,30]
    //이때 sum100에서 넘겨온 값은 여기 인자값으로 갈 것임
    var args = [...preArgs, ...arguments];
    return fn.apply(this, args);
  };
};

var sum100 = sum.partial(20, 80); //x,y를 미리 보냄
//미리 저장해줘!
console.log(sum100(30), sum100(50));
//아직 sum에 partial이라는 메소드 없음

밑에 20과 80을 미리 저장해서 부분함수를 만들어서 사용함