1 appel à la méthode
Appeler une méthode d'un objet, remplacer l'objet actuel par un autre. objet (en changeant en fait le pointeur interne de l'objet, c'est-à-dire en changeant le contenu pointé par celui-ci de l'objet).
Code Js
call([thisObj[,arg1[, arg2[, [,.argN]]]]])
Paramètres
thisObj
Facultatif. L'objet qui sera utilisé comme objet actuel.
arg1, arg2, , argN
Facultatif. Une séquence de paramètres de méthode sera transmise.
Explication
La méthode call peut être utilisée pour appeler une méthode à la place d'un autre objet. La méthode d'appel modifie le contexte d'objet d'une fonction du contexte initial au nouvel objet spécifié par thisObj. Si aucun paramètre thisObj n'est fourni, l'objet Global est utilisé comme thisObj.
Code Js
<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>
Code Js
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
Méthode d'application
Le premier paramètre de la méthode d'application est également. obligatoire L'objet passé à l'objet actuel est celui-ci à l'intérieur de la fonction. Les paramètres suivants sont les paramètres transmis à l'objet actuel.
Appliquer et appeler ont la même fonction, mais il existe des différences dans les paramètres. La signification du premier paramètre est la même, mais pour le deuxième paramètre : appliquer des passes dans un tableau de paramètres, c'est-à-dire que plusieurs paramètres sont combinés dans un tableau et transmis, tandis que call est transmis en tant que paramètre d'appel (à partir du commençant par deux paramètres).
Par exemple, la méthode d'écriture d'application correspondante de func.call(func1,var1,var2,var3) est : func.apply(func1,[var1,var2,var3]). est que vous pouvez directement ajouter l'objet arguments de la fonction actuelle transmis comme deuxième paramètre de apply.
Code Js
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. L'attribut appelant
renvoie une référence à la fonction, qui est le corps de la fonction qui appelle la fonction actuelle.
functionName.caller : L'objet functionName est le nom de la fonction en cours d'exécution.
Remarque :
Pour les fonctions, l'attribut de l'appelant n'est défini que lorsque la fonction est exécutée. Si la fonction est appelée depuis le niveau supérieur d'un programme JScript, alors l'appelant contient null . Si l'attribut caller est utilisé dans un contexte de chaîne, le résultat est le même que functionName.toString, c'est-à-dire que le texte décompilé de la fonction est affiché.
Code Js
<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. L'attribut de l'appelé
renvoie l'objet Function en cours d'exécution, qui est le corps de l'objet Function spécifié.
[function.]arguments.callee : le paramètre de fonction facultatif est le nom de l'objet Function en cours d'exécution.
Explication :
La valeur initiale de l'attribut de l'appelé est l'objet Function en cours d'exécution. L'attribut
callee est membre de l'objet arguments. Il représente une référence à l'objet fonction lui-même. Ceci est utile pour masquer la récursion de la fonction
ou assurer l'encapsulation de la fonction. L'exemple calcule récursivement les nombres naturels de 1 à n et. Et cet attribut
n'est disponible que lorsque la fonction associée est en cours d'exécution. Il convient également de noter que l'appelé a un attribut de longueur, qui est parfois
utilisé pour la vérification. arguments.length est la longueur réelle du paramètre et arguments.callee.length est la longueur du paramètre formel
À partir de là, vous pouvez déterminer si la longueur du paramètre formel est cohérente avec la longueur réelle du paramètre lors de l'appel.
Code Js
//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. lier
Code Js
<script type=“text/javascript”> varfirst_object = { num: 42 }; varsecond_object = { num: 24 }; functionmultiply(mult) { returnthis.num * mult; } Function.prototype.bind = function(obj) { var method =this, temp = function() { returnmethod.apply(obj, arguments); }; return temp; } varfirst_multiply = multiply.bind(first_object); first_multiply(5); // returns 42 * 5 varsecond_multiply = multiply.bind(second_object); second_multiply(5); // returns 24 * 5 </script>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!