call과 bind

이민호·2021년 3월 23일

call

자바스크립트는 다른언어들에 비해 부모 자식 객체로 설정하는게 매우 유연하다.

그래서 객체 뿐만아니라 함수도 부모를 설정할 수 있다.
바로 call을 이용한다.

예를들어 보자.

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

객체로 kim을 지정하고 함수sum을 따로 지정한다.

이때 sum함수를 kim객체에 포함시킬때 즉, 부모객체로 지정시킬때 call을 이용하면 sum은 kim객체에 포함되는 메소드가 된다.

이로인해 sum함수의 this는 kim을 가리키게 된다.

bind

call은 사용될때 마다 this를 바꾸는 형식이다.
그렇다면 내부적으로 this를 고정시키고 사용하는 방법은 무엇일까?
바로 bind이다.
bind는 새로운 힘수를 만들어 this값을 고정시킨다.

그럼 bind를 사용하는 방법을 알아보자

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

이렇게 kimSum이라는 새로운 객체를 만들어 sum의 this 를 kim으로 고정시켜버린다.

profile
life is fun

0개의 댓글