2018년 2월 10일 토요일

javascript call, apply, bind

-call
--객체의 생성자 연결에 call 사용
     : Product.call(this, name, price); 하는 순간, Product 의 this.name , this.price 는 call 의 name,price 로 대체된다. 유용하지만 잘 생각안하고 하면 위험
--익명 함수 호출에 call 사용
--함수 호출 및 'this'를 위한 문맥 지정에 call 사용

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Function/call


-apply 
이 함수의 구문은 거의 call()구문과 유사합니다., 기본적으로 다른 점은  call()은 함수에 전달될 여러 개의 인자를 받는데 비해, apply()는 배열로 된 하나의 인자를 받는다는 점입니다.

주의: Chrome14와 Internet Explorer 9를 포함한 대부분의 브라우저느 아직 유사배열객체를 apply에 사용할 수 없으며 오류가 출력됩니다.

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Function/apply


-bind 
call 과 비슷하지만, bind 는 this 만 전달할뿐 실행은 하지 않는다.
var plus = function(a, b, c) {
console.log([].slice.apply(arguments));
  return a + b + c;
};

var plusa = plus.bind(null, 13);
//bind 에 의해 plusa 의 첫번쨰 이자는 13
console.log(plusa(2, 3)); // 
//bind 된 plus 를 호출해도 13,2,3 순으로 됨

var plusb = plusa.bind(null, 2);
//plusa 에 다시 바인드 하면 두번쨰값이 됨. 
console.log(plusb(4));; // 
//bind 된 plus 를 호출해도 13,2,4 순으로 됨

var plusab = plusb.bind(null, 1, 3);
console.log(plusab(5));; // 
//bind 된 plus 를 호출해도 13,2,1,3,5 순으로 됨


https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Function/bind

0 comments:

댓글 쓰기