본문 바로가기
Javascript/Javascript 객체지향

[생활코딩] 객체지향 - 객체와 함수 / call / bind

by 닉우 2020. 8. 4.

자바스크립트는 객체가 다른 객체를 상속 받는데,

런타임 되는동안 또 다른 객체를 상속 받을 수 있을 정도로 굉장히 유연하다.

(__proto__ / Object.create()를 통해서)

 


<call>

 

sum은 어떤 객체에도 속해있지 않는다.

이 전에 살펴본 sum의 역할은 객체 안에서 first와  second를 더 해주는 역할을 했었다.

 

sum.call()을 적어주면 sum이라고 하는 객체를 실행시키는것이다. sum() 과 똑같은거다.

모든 함수는 call 이라고 하는 메소드를 가지고 있다.

call 메소드를 호출할때 첫 번째 인자로 kim을 주면 this = kim이 된다.


sum.call(lee)를 하니까 thir = lee가 된다.


call은 첫 번째 인자로는 그 함수의 내부적으로 this를 무엇으로 할것인지가 오고,

두 번째 인자부터는 우리가 호출하려고 하는 함수의 파라미터로 들어갈 인자값들이 들어간다.


<bind>

 

내부적으로 사용할 this를 고정시킬수 있는것이 bind이다.

var KimSum = sum.bind(kim);

내부적으로 this를 kim으로 하는 새로운 함수가 만들어진다.

bind도 마찬가지로 그 함수가 호출될때마다 사용될 인자를 지정할 수가 있다.

기존 sum함수에는 영향을 주지 않는다.

 

정리하자면

call은 실행되는 함수의 this값을 원하는 객체로 바꿔서 실행할 수 있게 해준다.

bind는 실행되는 함수의 this값을 원하는 객체로 고정시키는 새로운 함수를 만들어낸다.

 

 


 

 

 

 

 

 

 

 

※ 본 포스팅은 개인 공부 기록을 목적으로 남긴 글이며 본 사실과 다른 부분이 있다면 과감하게 지적 부탁드립니다.

댓글