[JavaScript] 16. call, apply, bind
함수를 호출하는 방법에는 ()
를 사용하거나 call
이나 apply
를 사용하는 방법이 있는데요!
웹브라우저에서 전역객체는 window
인데요! 그래서 기본적으로 this는 window
를 말합니다. 오늘은call
과 apply
사용하여 this를 지정하여 사용하는 방법과 bind
에 대해 정리해보려고 합니다.
🔥 call
call
의 첫번째 인자를 설정하여 this를 지정하여 객체를 재할당 할 수 있습니다. 그리고 두번째 인자들은 옵션값으로 인수를 전달하여 함수를 호출할 수 있어요!
func.call(thisArg[, arg1[, arg2[, ...]]])
아래 코드는 call
을 사용한 예제 코드입니다. call
을 사용하여 첫번째 인자로 전달해준 me
를 적용하여 this
를 변경하여 줄 수 있어요!
const user = {
name: "happy",
age: 23,
sayHello: function () {
console.log(`Hello! my name is ${this.name}!`);
},
};
const me = {
name: "wooden",
age: 26,
};
user.sayHello();
user.sayHello.call(me);
🔥 apply
apply
는 argument
와 같은 유사배열 형태로 인자를 전달한다는 점이 call
과 다른점인데요! 아래와 같이max()
를 예로 사용해볼 수 있습니다.
func.apply(thisArg, [argsArray])
const numArr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
//Math.max(numArr); -> x
console.log(Math.max(...numArr)); // o
console.log(Math.max.apply(null, numArr)); // Math가 내장객체임으로 this x
🔥 bind
마지막으로 bind
를 사용해볼까요! bind
는 call
과 apply
와 다르게 새로운 함수를 만들어 반환한다는 차이점이 있습니다.
func.bind(thisArg[, arg1[, arg2[, ...]]])
아래와 같이 bind
를 사용하여 새로운 함수를 반환받아 introduce
라는 이름으로 사용할 수 있습니다.
const user = {
name: "happy",
age: 23,
sayHello: function () {
console.log(`Hello! my name is ${this.name}!`);
},
};
const me = {
name: "wooden",
age: 26,
};
const introduce = user.sayHello.bind(me);
introduce();
🔥 느낀점
이번에 다시 한번 공부해보면서 개념정리보다는 앞으로는 좀 더 응용해서 사용할 수 있도록 해야겠다는 생각을 하게되었어요! 다양하게 사용해보고 적용해보면서 좀 더 자유롭게 사용할 수 있도록!
Author And Source
이 문제에 관하여([JavaScript] 16. call, apply, bind), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@shyunju7/JavaScript-16.-call-apply-bind저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)