JS_call , apply , bind _1

dev.dave·2023년 7월 29일

Javascript

목록 보기
141/167

call , apply , bind
첫번째

==========================

call 는

var obj = { num : 2 } ;

var addToThis = function (a){
return this.num + a;
};

// 여기서 코드를 보면 이제 함수에서 this.num 을 찾는데
사실 찾을수가 없다.
그래서 저기 obj 객체에 num 을 찾아 올수도 없다.
접근이 불가하니까...

근데 방법이 있다.

call 을 쓰면된다.

var obj = { num : 2 } ;

var addToThis = function (a){
return this.num + a;
};

console.log(addToThis.call(obj , 3)); // 5
// functioname.call(obj , functionargumentes)

// call을 써줌으로 obj객체에 접근할수 있는것이다.
즉, 함수호출할떄 call붙여서 인자로 넘겨줄때 obj를 넘겨주면 된다.
물런 넘겨줄때 함수의 파라미터가될 인자도 같이 넘겨줄수있다.

예를들어

var obj = { num : 2 } ;

var addToThis = function (a, b, c){
return this.num + a+b+c;
};

console.log(addToThis.call(obj , 1,2,3));

이렇게 넘겨줄수도 있다.

그리고

apply 가 있는데

apply 를 적용시켜볼수있다.

apply 로 배열을 넘겨줄수도 있다.

var obj = { num : 2 } ;

var addToThis = function (a, b, c){
return this.num + a+b+c;
};

var arr = [1,2,3];

console.log(addToThis.apply(obj , arr)); // 8

이렇게도 할수있다.

var obj = { num : 2 } ;
var obj2 = { num : 5 } ;

var addToThis = function (a, b, c){
return this.num + a+b+c;
};

var arr = [1,2,3];

console.log(addToThis.apply(obj , arr)); // 8
console.log(addToThis.apply(obj2 , arr)); // 11


여기서

bind 를 써보자면,

var obj = { num : 2 } ;

var addToThis = function (a, b, c){
return this.num + a+b+c;
};

var arr = [1,2,3];

var bound = addToThis.bind(obj); // 여기서 bind해주고 객체obj 넘겨주고

console.log(bound(1,2,3)); // 8 // 여기서 인자 넘겨주고

이렇게 따로 하면 된다.

=====================================

총 정리 하자면,,

var obj = { num : 2 } ;

var functionname = function (a, b, c){
return this.num + a+b+c;
};

functionname.call(obj,a,b,c); // call

functionname.apply(obj[a,b,c]); // apply // 배열을 넘겨준거임

var bound = functionname.bind(obj); // bind //여기서는 객체만 넘겨주고(아직 함수호출은 안됬다)
bound(a,b,c); // 그리고 여기서 호출하면서 인자넘겨주기! 이게 bind 방식임

profile
🔥개인 메모 / 다른블로그 자료 참조 / 다른블로그 자료 퍼옴 (출처표기) /여기저기서 공부 했던 내용 개인메모 & 참고 / 개인 기록 용도 블로그 입니다.🔥

0개의 댓글