js 방법call 및 apply 실례 분석
5168 단어 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의 가장 광범위한 응용입니다. 바로 구조 계승에 사용됩니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JScall () 및 apply () 방법에 대한 인스턴스 요약 사용최근에 JacvaScript에서의call()방법과apply()방법을 만났습니다. 그리고 어떤 때는 이 두 방법이 정말 중요합니다. 그러면 이 두 방법의 사용과 차이를 정리하겠습니다. 모든 함수는 두 가지 비계승적인 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.