developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Function/call

 

Function.prototype.call() - JavaScript | MDN

Function.prototype.call() call() 메소드는 주어진 this 값 및 각각 전달된 인수와 함께 함수를 호출합니다. 주의: 이 함수 구문은 apply()와 거의 동일하지만, call()은 인수 목록을, 반면에 apply()는 인수 배

developer.mozilla.org

call 함수는 특정 매서드를 호출할때 this값이나 기타 파라미터를 같이 전달해준다.

 

const person = {
   firstName: 'Ed',
   lastName: 'Developer',
   getName() {
      console.log(this.firstName + ' ' + this.lastName);
   }
}

function registerUser() {
   console.log(this);
}

registerUser();

위와 같이 호출하게 되면 registerUser() 안에 있는 thiswindow를 가르키게된다.

 

하지만 call을 사용하게되면 this를 지정해줄수있다.

const person = {
   firstName: 'Ed',
   lastName: 'Developer',
   getName() {
      console.log(this.firstName + ' ' + this.lastName);
   }
}

function registerUser() {
   console.log(this);
}

registerUser.call(person);

 

또한 call의 인자값으로 여러개를 같이 전달해서 this뿐만 아니라 파라미터도 넘겨 줄수있다.

const person = {
   firstName: 'Ed',
   lastName: 'Developer',
   getName() {
      console.log(this.firstName + ' ' + this.lastName);
   }
}

function registerUser(country, lang) {
   this.getName();
   console.log(`MY country is ${country} and my language is ${lang}`);
}

registerUser.call(person, 'hungary', 'en');

 

'JavaScript > Vanilla JS' 카테고리의 다른 글

Promise (프로미스) 1  (0) 2021.04.20
Array.concat (배열 추가 반환)  (0) 2021.04.18
prototype 1 (프로토타입)  (0) 2021.04.10
Array.flat (중첩 배열 풀기, 빈값 제거)  (0) 2021.04.09
Array.fill (배열 채우기)  (0) 2021.04.08