>웹 프론트엔드 >JS 튜토리얼 >javascript_javascript 기술의 호출 및 적용 메소드에 대한 간략한 설명

javascript_javascript 기술의 호출 및 적용 메소드에 대한 간략한 설명

WBOY
WBOY원래의
2016-05-16 17:21:191150검색

호출 및 적용의 첫 번째 실제 매개변수는 호출할 함수의 상위 객체이며, 이는 호출 컨텍스트입니다. 이에 대한 참조는 함수 본문에서 이를 통해 얻어집니다.
예를 들어 객체 o의 메소드로 f 함수를 호출하려는 경우 다음과 같이 호출 및 적용 메소드를 사용할 수 있습니다.

코드 복사 코드는 다음과 같습니다.

 f.call(o);
 f.apply(o);

가능
코드 복사 코드는 다음과 같습니다.

o.m = f; / f를 o 임시 메서드로 저장
o.m(); // 이 임시 메서드 호출
delete o.m; // 이 임시 메서드 삭제

예를 들어보겠습니다.
코드 복사 코드는 다음과 같습니다.

function testFun(){
return this.a this.b;
 }
var o = {a:1, b:2};
testFun.call(o) //3
testFun.apply(o); //3

위 코드의 실행 결과는 모두 3인데, return o.a o.b로 이해하면 됩니다.
호출 및 적용 메서드의 첫 번째 실제 매개변수가 null이거나 정의되지 않은 경우 어떻게 될까요? 다음 예를 살펴보겠습니다.
코드 복사 코드는 다음과 같습니다.

 var a = 10, b = 20;
function testFun(){
return this.a this.b;
}
testFun.call();
testFun.apply();

위 코드 실행 결과는 모두 30개 입니다. 호출 및 적용의 첫 번째 실제 매개변수가 null 또는 정의되지 않은 상태로 전달되면 전역 개체로 대체되기 때문입니다.
호출과 적용 두 메소드의 차이점은 무엇인가요?
호출 메소드의 경우 첫 번째 호출 컨텍스트 매개변수 이후의 실제 매개변수는 모두 호출할 함수에 전달되는 값입니다. 예를 들어 함수 f를 객체 o의 메서드로 호출하고 두 개의 매개변수를 전달하려면 다음 코드를 사용할 수 있습니다.
코드 복사 코드는 다음과 같습니다:

 f.call(o, 1, 2);

적용 메소드는 첫 번째 실제 매개변수 이후의 모든 실제 매개변수를 적용합니다. 배열에 담아
코드 복사 코드는 다음과 같습니다.

 f.apply (o, [1, 2]);

예를 들어보겠습니다
코드 복사 코드는 다음과 같습니다:

function testFun(x, y){
return this.a this.b x y;
}
var o = {a:1, b: 2};
testFun.call(o, 10, 20);
testFun.apply(o, [10, 20]);

위 코드의 실행 결과는 다음과 같습니다. 33, 이는 return o.a o.b 10 20으로 이해될 수 있습니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.