[TIL04-1] Javascript 'apply, call 에서의 this'

apply

apply는 브라우저가 자바스크립트에 제공하는 메소드로, 함수를 호출하는 특별한 방법이다.
this와 함께 유용하게 쓰이며, 여기에서 쓰이는 this는 함수와 객체를 연결하는 역할을 한다.

var daseul = {
  name: 'Daseul'
};
var bada = {
  name: 'Bada'
};
funtion greet(){
  return "Hello, I'm" ${this.name};
}
greet();             //'Hello, I'm undefined' - this는 어디에도 묶이지 않음
greet.apply(daseul); //'Hello, I'm Daseul' - this는 daseul
greet.apply(bada);   //'Hellom I'm Bada' - this는 bada

this의 값은 apply뒤에 오는 첫 번째 인자값이 된다.
따라서 위의 greet함수는 어떠한 객체와도 연결되지 않았지만 thisapply를 사용함으로서
해당 함수가 주어진 객체의 메서드인 것처럼 사용할 수 있다.
apply의 첫 번째 매개변수는 this로 사용할 값이고 , 그 뒤에 두 번째 인자가 온다면 그 인자는 호출하는 함수로 전달된다.
apply의 두 번째 인자는 배열의 형태로 전달된다.

만약 apply의 첫 번째 인자로 null을 전달하면 apply가 실행될 함수 인스턴스는 전역객체 (브라우저에서는 window)를 맥락으로 실행되게 된다.

call

callapply인자를 처리하는 방법을 제외하고 완전히 같다.
call은 일반적인 함수와 마찬가지로 두 번째 인자를 직접 받는다.(apply는 배열 형태)

greet.apply(daseul, ["hi"]); //apply 메소드 사용시
greet.call(daseul,"hi"); //call 메소드 사용시

참고

https://ibrahimovic.tistory.com/29
생활코딩

좋은 웹페이지 즐겨찾기