본문 바로가기

Dev-/java script, jQuery, Ajax

자바스크립트 call, apply의 의미

Function.prototype.call, Function.prototype.apply 함수는 본질적으로

해당 함수를 호출하는게 본질적인 의미이다.


함수를 호출할 때, 

스코프에 따라 this를 바인딩하기 헷갈릴때가 있는데,

명시적으로 이를 정해줄 수 있다는 것도 주요한 의미를 갖는다.



근데 아래를 보면,

let a = {
ori_name: 'ori_value'
};

function func() {
this.func_name = 'func_value';
console.log('func call!!!');
console.log('this is :: ', this);
}

func.call(a);



func.call(a);로 함수가 호출 된 후

a를 확인해 보면

console.log(a);



a 역시 바뀐 걸 확인할 수 있는데,

이것 때문에 call, apply 함수가 함수를 객체에 할당하는 것이라고 착각하기 쉬운데, 아니다.

(참고로 call, apply는 기능은 같고, 매개변수를 받는 형태만 다르다.)