[ JavaScript 01 ] 자바스크립트 call, apply, bind에 관하여
자바스크립트는 함수를 어디에서 호출했는지와 관계없이 this가 무엇인지 지정 가능합니다.
다음은 자바스크립트의 this의 영역 범위를 잡아주는 prototype 메소드에 관해 설명해 드리겠습니다.
call, appy, bind에 대하여 알아봅시다.
먼저 알아보기에 앞서서
[ this ]
this는 호출된 공간에 따라서 값이 변경되므로, this를 고정시킬 필요가 있습니다.
고정시키는 이 과정을 바인딩이라고 합니다.
[ bind ]
어떤 함수든지 (메소드도 가능) bind라는 함수를 적용시킬 수 있습니다.
모든 function object에서bind를 사용할 수 있다는 의미입니다.
bind함수를 사용하면 this는 내가 정한 object로 고정됩니다.
따라서 어떠한 환경이던 위의 코드를 보시면 this는 Obj가 되므로 확정된 결과를 보여줄 수 있게 됩니다.
다음으로는
위에 제시된 코드를 한번 살펴봅시다.
position는 Point의 메소드이기에 이미 this가point로 bind되어 있습니다
그런데 이 코드를 통해
bind를 써서 다시 바인드해서 사용할 수 있습니다.
[ call ]
call은 bind와 거의 비슷한 기능을 하지만 차이가 존재합니다.
call은 this를 특정값으로 지정을 해줍니다. 그리고 함수를 호출하면서 call을 사용하고
this로 사용할 객체를 넘깁니다. 그러면 호출된 함수가 그 주어진 객체의 메소드가 된 것입니다.
그리고 매개변수가 객체외에도 더 있다면 그 매개변수는 호출하는 함수로 전달이 됩니다.
[ apply ]
call과 하는 기능이 똑같습니다. 그저 매개변수를 전달하는 방법에 차이가 있습니다.
call은 함수처럼 매개변수를 직접 받지만, apply는 매개변수를 배열로 받습니다.
apply는 배열의 요소가 사용될 때 사용되는 유용한 함수입니다.
apply가 들어가는 예제는
보통 배열내의 최대값이나 최소값을 구하는 문제에서 사용됩니다.
Math.min이나 Math.max에다가 apply를 적용해서 배열을 던져주게되면
그 함수내에서 배열내의 최소값, 최대값을 찾아냅니다.
0 댓글