call, bind

PYG·2021년 5월 19일

OOP

목록 보기
8/8

call

  • 모든 함수는 call이라는 메소드를 가지고 있다
  • why? javascript에서 함수는 다 객체이기 때문에
  • call 함수의 첫 번째 인자는 내부 함수의 this 값으로 뭐를 넣을지, 두 번째 인자부터는 우리가 호출하려고 함수의 파라미터에 들어갈 인자 값이 들어오게 된다
  • 실행할 때 this의 값을 바꾼다
  • sum();과 같다

1.1 각각 떨어져 있는 객체에 함수를 적용하고 싶을 때

var kim = {name : 'kim', first : 10, second : 30};
var lee = {name : 'lee', first : 20, second : 50};
function sum() {
    return this.first+this.second;
}
console.log(sum.call(kim));

-> kim의 값이 this로 들어가게 된다
-> kim의 first + kim의 second

1.2 call 함수 인자(arguments) 추가

var kim = {name : 'kim', first : 10, second : 30};
var lee = {name : 'lee', first : 20, second : 50};
function sum(a+b) {
    return a+b+(this.first+this.second);
}
console.log(sum.call(kim, '값은 ', '-> '));

-> '값은 -> 40'출력

1.3

bind

  • 엮는다, 묶는다
  • 내부적으로 사용할 this를 아예 고정해서 함수를 새로 만들어낸다

1.1

var kim = {name : 'kim', first : 10, second : 30};
var lee = {name : 'lee', first : 20, second : 50};
function sum(a) {
    return a+(this.first+this.second);
}
var kimSum = sum.bind(kim, '-> ');
console.log(kimSum());

-> '-> 40' 출력

0개의 댓글