>  기사  >  웹 프론트엔드  >  Function.prototype.apply() 및 Function.prototype.call()_기본 지식 요약

Function.prototype.apply() 및 Function.prototype.call()_기본 지식 요약

WBOY
WBOY원래의
2016-05-16 15:03:311657검색

저는 늘 이 두 ​​가지의 용도를 잊어버리고 기록으로 남겨둡니다.
기능은 완전히 동일하지만 전달되는 매개변수가 다릅니다

신청

apply는 두 개의 매개변수를 허용합니다. 첫 번째 매개변수는 함수 본문에서 this 객체에 대한 포인터를 지정합니다. 두 번째 매개변수는 첨자 컬렉션(탐색 가능한 객체)입니다. Apply 메서드는 이 컬렉션의 요소를 객체에 매개변수로 전달합니다. 호출되는 함수:

var func = function(a, c, c){
  alert([a,b,c]); //[1,2,3]
}
func.apply(null, [1,2,3]);

전화

호출에 전달된 매개변수는 고정되지 않습니다. Apply와 마찬가지로 첫 번째 매개변수도 함수 본문의 this 포인터를 나타냅니다. 두 번째 매개변수부터 시작하여 각 매개변수가 차례로 함수에 전달됩니다.

var func = function(a, b, c){
  alert([a,b,c]); //[1,2,3]
}
func.call(null, 1,2,3);
call은 aply의 구문 설탕입니다. 첫 번째 매개변수가 null인 경우 함수 본문의 이 매개변수는 브라우저의 창인 호스트 개체를 가리킵니다.

통화 및 신청의 목적

1. 을 가리키도록 변경하세요.

위의 예시입니다

2.Function.prototype.bind

모의 함수.prototype.bind

Function.prototype.bind = function(context){
  var self = this;
  return function(){
    return self.apply(context, arguments);
  }
};

var obj = {
  name: 'cxs'
};

var func = function(){
  alert(this.name); //cxs
}.bind(obj);

fun();

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.