js 방법call 및 apply 실례 분석

5168 단어 apply
js프로그래밍에서 계승을 실현할 때 두 가지 특수한 방법, 콜과 apply를 사용했습니다.
ECMAScript v3에서 Function 원형에 이 두 가지 방법을 정의했는데 이 두 가지 방법의 작용은 모두 같다. 이 두 가지 방법을 사용하면 다른 대상 방법을 호출하는 것처럼 함수를 호출할 수 있다. 이 말은 책에서 베낀 것이다. 적어도 나는 이것이 무슨 뜻인지 이해하지 못했다.다음은 간단하고 알기 쉬운 것을 말하고 먼저 단락 코드를 보십시오.
function Introduce(name,age) 

{ 

document.write("My name is "+name+".I am "+age); 

} 

var p=new People(); 

Introduce.call(p,"Windking",20); 

위의 코드를 말하자면call을 사용한 후에 Introduce는 p의 방법이 되었다. 이렇게 말하면 알겠니?
콜 방법을 사용하면 상술한 코드는 이 코드와 같다.
function People(name,age) 

{ 

this.name=name; 

this.age=age; 

this.Introduce=function(){ 

document.write("My name is "+name+".I am "+age); 

}; 

} 

무슨 말인지 알겠어요?apply도 같은 작용을 한다. 
좋아, 우리는 이 방법이 도대체 실제에서 무엇을 사용할 수 있든지 간에 먼저 문법을 이야기하자.call은 최소한의 매개 변수를 받아들인다. call의 첫 번째 매개 변수는 당신이 필요로 하는 대상을 가리킨다. 예를 들어 위의 예, Introduce 방법은 그가 대상 p에 호출되기를 바란다. 그러면 p를 call의 첫 번째 매개 변수로 삼아라.나머지 매개 변수의 개수는 임의이고 작용은 Introduce 방법의 매개 변수이다.순서는 Introduce 매개 변수가 설명하는 순서에 따릅니다.예를 들면 소개.call(p, "Windking", 20), 만약에 Introduce가 p의 실례적인 방법이라면 바로 다음과 같다. p. Introduce("Windking", 20).알겠어요?입력 매개 변수의 순서는 함수 성명 매개 변수의 순서와 일치해야 한다는 것을 기억하십시오. www.jbxue.com에서 콜을 이해하면 apply 방법은 이해하기 쉽다. apply와call의 유일한 차이점은call이 적어도 하나의 매개 변수를 받아들이는 것이다. 반면에 apply는 두 개의 매개 변수만 받아들인다. 첫 번째 매개 변수는call과 같고 두 번째 매개 변수는 아래 표를 가진 집합이다. 예를 들어 Introduce.call(p, "Windking", 20)은 Introduce로 바꿀 수 있습니다.apply(p, ["Windking", 20])입니다.이번에는 알겠어요?그럼 도대체 이 두 가지 방법이 무슨 소용이 있을까요?만약 우리가 단지 위의 그 기능을 실현하기 위해서 Introduce를 People로 실현하는 방법이 더 좋지 않습니까?
나는 응용을 두 가지로 요약했다. 1.공유 방법.코드 보기:
function Introduce(name,age) 

{ 

document.write("My name is "+name+".I am "+age); 

} 

이것은 자기소개의 방법이다. 현재 한 남자아이의 클래스와 한 여자아이의 클래스를 가정하면 (여기서 나는 단지 시범을 위해 실제에서 People의 부류를 사용할 뿐이다.) 왜냐하면 그들의 Introduce는 모두 같기 때문에 우리는 이 방법을 공유할 수 있다.
function Boy() 

{ 

this.BoyIntroduce=function(){ 

Introduce.call(this,name,age); 

}; 

} 

같은 이치로, Girl에서도 마찬가지다. 그러면 우리는 코드를 쓰는 것을 피할 수 있다.사실 이것은 좀 억지스럽다. 왜냐하면 우리는 충분히 쓸 수 있기 때문이다.
function Boy() 

{ 

this.BoyIntroduce=function(){ 

Introduce(name,age); 

} 

} 

하지만 이때 우리가 Apply를 사용하면 훨씬 간단해 보인다.
function Boy() 

{ 

this.BoyIntroduce=function(){ 

Introduce.apply(this,arguments); 

}; 

} 

많이 쉬워졌죠?만약 파라미터가 매우 많다면, 다시는 그런 촘촘한 파라미터를 쓰지 않아도 되지 않겠는가!
2. 도메인 전체에서 www.jbxue를 호출합니다.com 간단한 예제:
function Boy(name,age) 

{ 

this.BoyIntroduce=function(){ 

document.write("My name is "+name+".I am "+age); 

} 

} 

function Girl(name,age) 

{



} 

이것은 Boy와 Girl 클래스입니다. 그리고 우리는 다음과 같은 코드를 씁니다.
var b=new Boy("Windking",20); 

b.BoyIntroduce();

이것은 아무런 이의도 없다.만약에 어느 날 한 여자도 자기소개를 하고 싶은데 우연히 한 번 썼다면 저는 Girl류를 수정할 필요가 없습니다. 왜냐하면 다른 여자는 부끄러워서 자기소개를 좋아하지 않기 때문입니다.그럼 이럴 때 내가 이럴 수 있어.
var g=new Girl("Xuan",22); 

Introduce.call(g,"Xuan",22);

3, 진정한 용도--계승
다음은call과apply의 가장 광범위한 응용입니다. 바로 구조 계승에 사용됩니다.

좋은 웹페이지 즐겨찾기