내가 보려고 만든 개발 공부 일지

call() 과 apply() 의 this 바인딩 본문

Javascript

call() 과 apply() 의 this 바인딩

kwangsunny 2021. 7. 2. 23:58

기본형태는 아래와 같다.

someFunction.call([thisObj[, arg[, arg2[, ...]]]])

첫번째 인자 thisObj someFunction this 사용될 객체이다.

뒤로는 함수내에서 추가로 쓰일 파라미터 값들이다. ( 선택사항 )

예제 )

var obj = {
    z : "zzz",
    a : "aaa",
    b : "bbb"
}

var test =  function(arg1 = "test1", arg2 = "test2"){
    console.log(`p1 : ${this.a} / p2 : ${this.b} / arg1 = ${arg1} / arg2 = ${arg2}`);
}

test.call(obj, 123, 456);
// 결과  -->  p1 : aaa / p2 : bbb / arg1 = 123 / arg2 = 456

 

예제에서 .call() 첫번째 인자로 obj 넘겨주고 있다. 그래서 test 함수의 this obj 가리키게되어 this.a obj.a 된것이다.

arg1, 2 추가로 전달받은 인자값들이다. ( = obj this test this 바인딩 )

 

apply() call() 똑같다.

한가지 차이점은 thisObj 이후 던지는 인자값을 배열로 넘긴다.

ex) 

test.call(obj, [123, 456]);

 

'Javascript' 카테고리의 다른 글

Javascript - in vs hasOwnProperty  (0) 2021.07.12
Javascript - 프로토타입?  (0) 2021.07.12
Falsy / Truthy 한 값  (0) 2021.07.02
Tagged Templates  (0) 2021.07.02
Javascript 객체의 복사  (0) 2021.07.02
Comments