본문 바로가기

JavaScript

call(), apply(), bind()

call,apply,bind는 함수의 메서드(프로퍼티)다.

즉, 함수이름.call() , 함수이름.apply() , 함수이름.bind()

call() 과 apply()

const obj = { name: "KimJye" };
const say = function(city) {
  console.log(`Hello, my name is ${this.name}, I live in ${city}`);
};
say("seoul");
say.call(obj, "seoul");
say.apply(obj, ["seoul"]);

결과

Hello, my name is undefined, I live in seoul
Hello, my name is KimJye, I live in seoul
Hello, my name is KimJye, I live in seoul

 

bind

const obj = { name: "KimJye" };
const say = function(city) {
  console.log(`Hello, my name is ${this.name}, I live in ${city}`);
};

const bindSay = say.bind(obj);
bindSay("seoul");

say.bind(obj)는 bind된 함수를 리턴한다.

따라서 bindSay는 this를 obj로 갖고 있기 때문에 나중에 사용해도 된다.

 

차이점 

call() 과 apply() 차이 : apply는 두번째 인자부터 모두 배열에 넣어야 한다.

call(), apply() : 함수를 실행한다.

bind() : this가 바인딩된 새로운 함수를 리턴한다

'JavaScript' 카테고리의 다른 글

JSON  (0) 2019.07.23
async await  (0) 2019.07.23
다양한 메소드  (0) 2019.07.22
함수  (0) 2019.07.22
객체탐색과 배열탐색  (0) 2019.07.22