Mozilla의 공식 웹 사이트에서 Call () 소개는 다음과 같습니다.
코드 사본은 다음과 같습니다.
call () 메소드는 지정된이 값과 몇 가지 지정된 매개 변수 값으로 함수 또는 메소드를 호출합니다.
전화 () 구문
코드 사본은 다음과 같습니다.
fun.call (thisarg [, arg1 [, arg2 [, ...]]])))
전화 () 매개 변수
thisarg
코드 사본은 다음과 같습니다.
이 값은 재미있는 기능이 실행될 때 지정되었습니다. 지정된이 값이 반드시 함수가 실행될 때이 값을 의미하는 것은 아닙니다. 이 함수가 비 스트릭 모드에 있으면 NULL 및 UNDEFINED로 지정된이 값은 자동으로 글로벌 객체 (브라우저의 창 객체)를 가리키며 원래 값 (번호, 문자열, 부울 값) 의이 값은 원래 값의 자동 포장 객체를 가리 킵니다.
arg1, arg2, ...
코드 사본은 다음과 같습니다.
지정된 매개 변수 목록.
JavaScript의 Call () 메소드
위의 복잡한 설명에주의를 기울이지 말고이 과정을 단계별로 시작하십시오.
Call () 메소드의 예
그래서 나는 또 다른 안녕하세요, 세계를 썼습니다.
코드 사본은 다음과 같습니다.
함수 print (p1, p2) {
Console.log (P1 + '' + P2);
}
print ( "hello", "world");
print.call (정의되지 않은, "hello", "world");
두 가지 방법은 동일한 출력을 가지지 만 대조적으로 호출 방법은 정의되지 않은 것을 통과합니다.
다음으로 다른 예를 살펴 보겠습니다.
코드 사본은 다음과 같습니다.
var obj = function () {};
함수 print (p1, p2) {
Console.log (P1 + '' + P2);
}
print.call (obj, "hello", "world");
그러나 여기에서 우리가 통과 한 것은 이전 예제에서 정의되지 않은 것이 매개 변수를 전달해야하기 때문에 여전히 정의되지 않았습니다.
코드 사본은 다음과 같습니다.
함수 인쇄 (이름) {
Console.log (this.p1 + '' + this.p2);
}
var h = {p1 : "hello", p2 : "world", print};
H. 프린트 ( "FD");
var h2 = {p1 : "hello", p2 : "world"};
print.call (H2, "Nothing");
전화는 자신의 전화와 마찬가지로 다른 사람들의 방법과 사물을 빌려서 호출됩니다. H.Print에서는 함수를 메소드로 불리면 관련 객체를 가리 킵니다. 그러나이 예에서는 H2가 H2라는 인쇄 또는 인쇄물을 호출하는지 여부를 이해하지 못했습니다. 그래서 나는 모질라의 예를 인용했다
코드 사본은 다음과 같습니다.
기능 제품 (이름, 가격) {
this.name = 이름;
this.price = 가격;
if (price <0)
Throw RangeError ( '부정적인 가격으로 제품 "' + name + '"를 생성 할 수 없습니다);
이것을 반환하십시오;
}
기능 음식 (이름, 가격) {
Product.Call (이, 이름, 가격);
this.category = '음식';
}
food.prototype = 신제품 ();
var Cheese = 새로운 음식 ( 'Feta', 5);
Console.log (치즈);
여기서 우리는 어떤 객체 호출을 실제로 이해할 수 있습니다. 이 예에서는 식품 생성기를 사용하여 생성 된 객체 인스턴스는 제품 생성기에 이름 및 가격 속성이 추가되지만 범주 속성은 각 생성자에 정의됩니다.
코드 사본은 다음과 같습니다.
함수 인쇄 (이름) {
Console.log (this.p1 + '' + this.p2);
}
var h2 = 함수 (no) {
this.p1 = "안녕하세요";
this.p2 = "세계";
print.call (이것, "아무것도");
};
H2 ();
여기서 H2는 함수 인쇄를 호출하는 수신기로 사용됩니다. 식품 예에서와 같이, 아동 생성자에서, 부모 생성자의 통화 방법을 호출하여 상속을 구현할 수 있습니다.
통화 방법의 장점은 "효과적인 JavaScript"에 도입됩니다.
1. 호출 메소드를 사용하여 수신기를 사용자 정의하여 함수를 호출하십시오.
2. 호출 메소드를 사용하여 주어진 객체에 존재하지 않는 메소드를 호출하십시오.
3. 통화 방법을 사용하여 사용자가 콜백 함수에 대한 수신자를 지정할 수있는 고차 기능을 정의하십시오.