함수를 호출하는 방법
1. 함수(파라미터인자) : 가장 기본적인 방법
2. 함수.call(null, 파라미터인자1, 파라미터인자2, ..) : 함수.call()을 생략하여 더 간단하게 호출할 수 있게 한 것이 1번
3. 함수.apply(null, 파라미터인자 배열) : apply의 첫번째 인자를 null로 하고, 두번째 인자를 배열형식으로 한다면 1,2번과 같은 결과가 나온다.
apply의 사용
apply(this로 보내고 싶은 객체, 파라미터인자 배열)
const obj = { msg : 'hello' }
function print(){
console.log(this.msg);
}
print.apply(obj); // 결과: hello가 출력된다.
이것은 흡사 obj안에 print함수를 넣은 것과 같은 효과가 난다.
하지만 확실하게 다른 것은
apply를 통해 this 전체를 출력 한다면 print함수는 출력되지 않을 것이고,
obj.print = print 를 통해 obj의 안에 print함수를 넣는다면 this 전체출력 시 print함수까지 출력될 것이다.
(apply를 통해 해당 함수가 다른 객체의 소유물인 것처럼 실행할 수 있다.)
만약 apply의 첫번째 인자로 null을 전달하면 apply가 실행된 함수 인스턴스는 전역객체(브라우저에서는 window)를 맥락으로 실행되게 된다.
출처
opentutorials.org/course/743/6550
'Front > Java Script' 카테고리의 다른 글
전역객체 / this & this의 제어 (0) | 2021.04.20 |
---|---|
객체의 생성 ( 생성자 & new ) (0) | 2021.04.20 |
arguments VS parameter (0) | 2021.04.20 |
클로저(closure) (0) | 2021.04.12 |
값으로서의 함수(변수, 매개변수, 리턴값, 객체속성, 배열값) & 콜백 (0) | 2021.04.12 |