[javascript] call, apply, bind

dev stefanCho·2021년 12월 7일
0

javascript

목록 보기
18/26

call, apply, bind

call은 argument를 , 로 연결해서 받는다.
apply는 argument를 array형태로 받는다. (call과 apply는 기능적으로는 같다.)
bind는 this를 store 하게 된다. (bind는 미래에 function을 call할 때 쓰이게 된다. 예를들면 callback function으로)

call은 fuction invoke의 줄인표현이다.

function a() {
  console.log('hi')
}

a.call() // a()와 같다.

call로 object의 function 빌려쓰기

const wizard = {
  name: 'Cho',
  health: 50,
  heal(num1, num2) {
    return this.health += num1 + num2;
  }
}

const archer = {
  name: 'Robin Hool',
  health: 30,
}

// heal method를 archer가 빌려쓰려면 어떻게 해야할까?
wizard.heal.call(archer, 30, 70); // archer.health: 130
wizard.heal.apply(archer, [30, 70]); // archer.health: 230
const healArcher = wizard.heal.bind(archer, 30, 70);
healArcher(); // archer.health: 330

bind로 function currying 만들기

arguments를 일부만 bind하여, currying을 만들 수 있다.

const multiply = (a, b, c) => {
  return a * b * c;
}

const multiplyByTwo = multiply.bind(this, 2);
multiplyByTwo(3, 4); // 24
const multiplyByTwoAndThree = multiply.bind(this, 2, 3);
multiplyByTwoAndThree(4); // 24
profile
Front-end Developer

0개의 댓글