잘 정리해보자

apply, bind 본문

javascript

apply, bind

토마토오이 2019. 9. 20. 13:22

Apply : this에 해당되는 값을 변경할 수 있다.

 

Var fnObj = {

fn1 : function( str1, str2 ){

        console.log( str1 + “/“ + str2 );

        console.log( this );

    }

};

 

Var obj0 = {

“test1” : “test1”,

“test2” : “test2"

};

 

fnObj.fn1.apply( [“wow1”,”wow2"] );

> undefined/undefined

> [“wow1”,”wow2”] 

=> this 가 파라미터 값으로 잡힌다.

 

fnObj.fn1.apply(obj0);

> undefined/undefined

> {test1 : “test1”, test2 : “test2”}

=> this가 obj0으로 잡힌다.

 

fnObj.fn1.apply(obj0, [“wow1”,”wow2"]);

> wow1/wow2

> {test1 : “test1”, test2 : “test2”}

=> this 가 obj0으로 잡히며, str1과 str2가 순차적으로 다음 파라미터인 배열로 값이 된다. (배열 파라미터에 2개 이상 넣어도 출력이 str2까지 임으로 변경은 안됨)

 

 

 

 


 

Bind : this값을 변경하지만 함수를 직접적으로 실행하지 않고 함수 자체를 return 한다. 

 

 

fnObj.fn1.bind(obj0,["test"]);

> ƒ (str1,str2){ console.log(str1 + "/" + str2); console.log(this); }

 

 

var fn1 = fnObj.fn1.bind(obj0,["test"]);

fn1();

> test/undefined

> {test1 : “test1”, test2 : “test2”}

 

=> 함수를 변수에 담은 후 호출해야 실행된다.

 

 

'javascript' 카테고리의 다른 글

웹펙 - 설치와 실행  (0) 2021.04.10
자바스크립트 기본동작과 웹펙 사용 이유  (0) 2021.04.10
Hoisting (호이스팅) 설명  (0) 2019.09.20
Cross Browsing 설명  (0) 2019.09.20
iscroll 사용  (0) 2019.09.20
Comments