자바스크립트는 객체가 다른 객체를 상속 받는데,
런타임 되는동안 또 다른 객체를 상속 받을 수 있을 정도로 굉장히 유연하다.
(__proto__ / Object.create()를 통해서)
<call>
sum은 어떤 객체에도 속해있지 않는다.
이 전에 살펴본 sum의 역할은 객체 안에서 first와 second를 더 해주는 역할을 했었다.
sum.call()을 적어주면 sum이라고 하는 객체를 실행시키는것이다. sum() 과 똑같은거다.
모든 함수는 call 이라고 하는 메소드를 가지고 있다.
call 메소드를 호출할때 첫 번째 인자로 kim을 주면 this = kim이 된다.
call은 첫 번째 인자로는 그 함수의 내부적으로 this를 무엇으로 할것인지가 오고,
두 번째 인자부터는 우리가 호출하려고 하는 함수의 파라미터로 들어갈 인자값들이 들어간다.
<bind>
내부적으로 사용할 this를 고정시킬수 있는것이 bind이다.
var KimSum = sum.bind(kim);
내부적으로 this를 kim으로 하는 새로운 함수가 만들어진다.
bind도 마찬가지로 그 함수가 호출될때마다 사용될 인자를 지정할 수가 있다.
정리하자면
call은 실행되는 함수의 this값을 원하는 객체로 바꿔서 실행할 수 있게 해준다.
bind는 실행되는 함수의 this값을 원하는 객체로 고정시키는 새로운 함수를 만들어낸다.
※ 본 포스팅은 개인 공부 기록을 목적으로 남긴 글이며 본 사실과 다른 부분이 있다면 과감하게 지적 부탁드립니다.
'Javascript > Javascript 객체지향' 카테고리의 다른 글
[생활코딩] 객체지향 - prototype vs proto (0) | 2020.08.05 |
---|---|
[생활코딩] 객체지향 - super / 객체상속 (0) | 2020.08.01 |
[생활코딩] 객체지향 - 메소드 구현 / 상속 (0) | 2020.07.31 |
[생활코딩] 객체지향 - Classes (0) | 2020.07.31 |
[생활코딩] 객체지향 - prototype (0) | 2020.07.31 |
댓글