ECMAScript v3에서,이 두 가지 방법은 함수 프로토 타입에 대해 정의됩니다. 이 두 가지 방법의 기능은 동일합니다.이 두 가지 방법을 사용하면 다른 객체 메소드를 호출하는 것과 같은 함수를 호출 할 수 있습니다. 이 문장은이 책에서 복사되었습니다. 적어도 나는 이것이 의미하는 바를 이해하지 못했습니다.
간단하고 이해하기 쉬운 것에 대해 이야기합시다. 먼저 코드를 살펴 보겠습니다.
코드 사본은 다음과 같습니다.
기능 소개 (이름, 나이)
{
document.write ( "내 이름은"+name+"입니다. 나는"+age);
}
var p = 새로운 사람 ();
소개 .call (P, "Windking", 20);
위의 코드에 대해 이야기합시다. 통화를 사용한 후 소개는 p의 방법이됩니다. 당신이 이것을 이해하는지 궁금합니다. 호출 메소드를 사용하면 위의 코드는이 코드와 같습니다.
코드 사본은 다음과 같습니다.
기능인 (이름, 나이)
{
this.name = 이름;
this.age = age;
this.introading = function () {
document.write ( "내 이름은"+name+"입니다. 나는"+age);
};
}
당신은 의미를 이해합니까? 동일한 기능을 적용하십시오.
자, 실제로이 방법을 실제로 사용할 수 있더라도 먼저 문법에 대해 이야기 해 봅시다.
통화는 하나 이상의 매개 변수를 허용합니다. 호출의 첫 번째 매개 변수는 필요한 객체를 나타냅니다. 예를 들어, 위의 예에서 소개 메소드는 객체 p에 의해 호출 될 수 있기를 희망하므로 p는 호출의 첫 번째 매개 변수로 사용됩니다. 나머지 수의 매개 변수는 임의적이며 소개 방법의 매개 변수로 사용됩니다. 주문은 소개 매개 변수에 의해 선언 된 순서입니다. 예를 들어, access.call (p, "windking", 20), pecivers 소개가 p의 예제 인 경우, 이것이 다음을 의미하는 바입니다. 이해했나요? 들어오는 매개 변수 순서는 함수 선언 매개 변수 순서와 일치해야합니다.
통화를 이해 한 후에는 적용 방법을 이해하기 쉽습니다. 적용과 통화의 유일한 차이점은 통화가 하나 이상의 매개 변수를 수락하고 적용은 두 매개 변수 만 허용한다는 것입니다. 첫 번째 매개 변수는 Call과 동일하고 두 번째 매개 변수는 첨자가있는 세트입니다. 예를 들어, 소개 .call (p, "windking", 20)을 소개로 다시 쓸 수 있습니다 (p, [ "windking", 20]). 이번에는 이해합니까?
그렇다면이 두 가지 방법의 사용은 무엇입니까? 위의 기능을 구현하려면 소개를 사람들로 구현하는 것이 더 낫지 않습니까?
응용 프로그램을 두 가지로 요약합니다.
1. 공유 방법. 먼저 코드를 살펴 보겠습니다.
코드 사본은 다음과 같습니다.
기능 소개 (이름, 나이)
{
document.write ( "내 이름은"+name+"입니다. 나는"+age);
}
이것은 자기 소개 방법입니다. 이제 우리는 소년의 수업과 소녀의 수업을 가지고 있다고 가정 해 봅시다 (실제로 사람들의 부모 수업이 사용될 것입니다). 소개가 동일하기 때문에이 방법을 공유 할 수 있기 때문입니다.
코드 사본은 다음과 같습니다.
기능 보이 ()
{
this.boyintroading = function () {
소개 .call (이, 이름, 나이);
};
}
마찬가지로 소녀에서도 마찬가지이므로 코드 작성을 피할 수 있습니다. 실제로, 이것은 우리가 다음과 같이 쓸 수 있기 때문에 약간 널리 퍼져 있습니다.
코드 사본은 다음과 같습니다.
기능 보이 ()
{
this.boyintroading = function () {
소개 (이름, 나이);
}
}
그러나 현재로서는 적용을 사용하면 훨씬 간단하게 보일 것입니다.
코드 사본은 다음과 같습니다.
기능 보이 ()
{
this.boyintroading = function () {
소개. Apply (이, 인수);
};
}
훨씬 간단하지 않습니까? 매개 변수가 많으면 일련의 조밀 한 매개 변수를 작성할 필요가 없습니다!
2. 크로스 도메인 전화
간단한 예제를 참조하십시오 (데모 만, 가치 없음) :
코드 사본은 다음과 같습니다.
기능 보이 (이름, 나이)
{
this.boyintroading = function () {
document.write ( "내 이름은"+name+"입니다. 나는"+age);
}
}
기능 소녀 (이름, 나이)
{
}
이것은 소년과 소녀 수업이며 다음 코드를 작성합니다.
var b = New Boy ( "Windking", 20);
B.BoyIntROODDE ();
이것에 대한 반대는 없습니다. 언젠가 자신을 소개하고 우연히 사용하려는 소녀가 있다고 가정하면 다른 소녀들이 부끄러워하고 자신을 소개하는 것을 좋아하지 않기 때문에 소녀 수업을 수정할 필요가 없습니다. 그런 다음이 시간을 할 수 있습니다.
var g = New Girl ( "Xuan", 22);
소개 .call (G, "Xuan", 22);
3. 실제 사용 - 상속
좋아요, 위는 모두 작은 트릭이며 우아함의 장소가 아닙니다. 아래는 가장 널리 사용되는 통화 및 적용이며 구조 상속에 사용됩니다.