Heim >Web-Frontend >js-Tutorial >Detaillierte Code-Erklärung der Aufrufmethode, der Apply-Methode, des Aufruferattributs und des Aufruferattributs von JavaScript

Detaillierte Code-Erklärung der Aufrufmethode, der Apply-Methode, des Aufruferattributs und des Aufruferattributs von JavaScript

黄舟
黄舟Original
2017-03-18 15:14:351323Durchsuche


js call method_apply method_caller attribute_callee attribute

1. Rufen Sie eine Methode eines Objekts auf und ersetzen Sie das aktuelle Objekt durch ein anderes Objekt (tatsächlich den internen Zeiger des Objekts ändern, d. h. den Inhalt des Objekts ändern, auf den dieser zeigt).
Js-Code

Parameter
call([thisObj[,arg1[, arg2[,   [,.argN]]]]])
thisObj

Optional. Das Objekt, das als aktuelles Objekt verwendet wird.
arg1, arg2, , argN
Optional. Es wird eine Folge von Methodenparametern übergeben.
Erklärung
Mit der Aufrufmethode kann eine Methode anstelle eines anderen Objekts aufgerufen werden. Die Aufrufmethode ändert den Objektkontext einer Funktion vom Anfangskontext in das durch thisObj angegebene neue Objekt. Wenn kein thisObj-Parameter angegeben wird, wird das globale Objekt als thisObj verwendet.

Js-Code

Js-Code
<input type=“text”id=“myText”value=“input text”>
<script>
functionObj(){this.value=“对象!”;}
varvalue=“global 变量”;
functionFun1(){alert(this.value);}

window.Fun1();   //global 变量
Fun1.call(window);  //global 变量
Fun1.call(document.getElementByIdx_x_x(‘myText’));//input text
Fun1.call(new Obj());//对象!
</script>

varfirst_object = {
num: 42
};
varsecond_object = {
num: 24
};
functionmultiply(mult) {
returnthis.num * mult;
}
multiply.call(first_object, 5); // returns 42 * 5
multiply.call(second_object, 5); // returns 24 * 5
2. Apply-Methode

Der erste Parameter der Apply-Methode ist ebenfalls erforderlich Das an das aktuelle Objekt übergebene Objekt ist this innerhalb der Funktion. Die folgenden Parameter sind die Parameter, die an das aktuelle Objekt übergeben werden. Anwenden und Aufrufen haben die gleiche Funktion, es gibt jedoch Unterschiede in den Parametern. Die Bedeutung des ersten Parameters ist dieselbe, aber für den zweiten Parameter gilt: apply übergibt ein Parameter-Array, d. h. mehrere Parameter werden in einem Array zusammengefasst und übergeben, während call als Parameter von call (aus dem) übergeben wird beginnend mit zwei Parametern).
Die entsprechende Apply-Schreibmethode von func.call(func1,var1,var2,var3) lautet beispielsweise: func.apply(func1,[var1,var2,var3]). ist, dass Sie das Argumentobjekt der aktuellen Funktion direkt als zweiten Parameter von apply hinzufügen können.

Js-Code

var func=newfunction(){this.a=“func”}
varmyfunc=function(x,y){
vara=“myfunc”;
alert(this.a);
alert(x + y);
}
myfunc.call(func,“var”,“ fun”);// ”func” ”var fun”
myfunc.apply(func,["var"," fun"]);// ”func” ”var fun”
3. Das Aufruferattribut

gibt einen Verweis auf die Funktion zurück, bei der es sich um den Funktionskörper handelt, der die aktuelle Funktion aufruft. functionName.caller: Das functionName-Objekt ist der Name der ausgeführten Funktion.
Hinweis:
Bei Funktionen wird das Aufruferattribut nur definiert, wenn die Funktion ausgeführt wird. Wenn die Funktion von der obersten Ebene eines JScript-Programms aufgerufen wird, enthält der Aufrufer null . Wenn das Caller-Attribut in einem String-Kontext verwendet wird, ist das Ergebnis dasselbe wie functionName.toString, d. h. der dekompilierte Text der Funktion wird angezeigt.

Js-Code


<script>
functionCallLevel(){
if(CallLevel.caller ==null)
alert(“CallLevel was called from the top level.”);
else
alert(“CallLevel was called by another function:\n”+CallLevel.caller);
}
functionfunCaller(){
CallLevel();
}
CallLevel();
funCaller()
</script>
4. Das aufgerufene Attribut

gibt das ausgeführte Funktionsobjekt zurück, das den Hauptteil des angegebenen Funktionsobjekts darstellt. [function.]arguments.callee: Optionaler Funktionsparameter ist der Name des Funktionsobjekts, das gerade ausgeführt wird.
Erklärung:
Der Anfangswert des aufgerufenen Attributs ist das ausgeführte Funktionsobjekt. Das
callee-Attribut ist ein Mitglied des Arguments-Objekts. Dies ist hilfreich, um die Rekursion der
-Funktion zu verbergen. Beispiel: Beispiel berechnet rekursiv die natürlichen Zahlen von 1 bis n und. Und dieses Attribut
ist nur verfügbar, wenn die zugehörige Funktion ausgeführt wird. Es sollte auch beachtet werden, dass callee ein Längenattribut hat, das manchmal
zur Überprüfung verwendet wird. arguments.length ist die tatsächliche Parameterlänge und arguments.callee.length ist die
formale Parameterlänge. Daraus können Sie beim Aufruf ermitteln, ob die formale Parameterlänge mit der tatsächlichen Parameterlänge übereinstimmt.

Js-Code

//callee可以打印其本身
functioncalleeDemo() {
alert(arguments.callee);
}
//用于验证参数
functioncalleeLengthDemo(arg1, arg2) {
if(arguments.length==arguments.callee.length) {
window.alert(“验证形参和实参长度正确!”);
return;
} else{
alert(“实参长度:”+arguments.length);
alert(“形参长度: ”+arguments.callee.length);
}
}
//递归计算
var sum =function(n){
if(n <= 0)
return 1;
else
returnn +arguments.callee(n - 1)
}
5. binden

Js-Code

Das obige ist der detaillierte Inhalt vonDetaillierte Code-Erklärung der Aufrufmethode, der Apply-Methode, des Aufruferattributs und des Aufruferattributs von JavaScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn