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 |