Dans JavaScript, si la fonction appartient à un objet, le comportement d'accès à la fonction via l'objet est appelé "Call de méthode". Contrairement aux appels de fonction ordinaires, lors de la réalisation d'un appel de méthode, cette référence dans la fonction changera - celle-ci fera référence à l'objet utilisé pour appeler la fonction (cet objet deviendra le contexte d'invocation de l'appel de méthode):
La copie de code est la suivante:
var x = 99;
var échantillon = {
X: 1,
acte: fonction (a) {
this.x = a * a; // attribuez la valeur à l'échantillon x, pas x objet global x.
}
}
échantillon.acte (6);
console.log (Sample.x); // 36
console.log (x); // 99
Comme l'accès aux propriétés dans les objets, en plus d'utiliser des opérateurs de points, JavaScript peut également utiliser les opérateurs de support pour passer des appels de méthode:
La copie de code est la suivante:
// d'autres façons d'invoquer la méthode
échantillon ["ACT"] (7);
Console.log (Sample.x); // 49
Pour les fonctions en JavaScript, un comportement intéressant consiste à intégrer des fonctions (fermetures) dans les fonctions. Lors de l'appel de méthode, s'il existe une fonction intégrée dans la fonction de méthode, le code de cette fonction intégrée peut accéder à la valeur de variable externe:
La copie de code est la suivante:
// La fonction imbriquée peut accéder à la variable en dehors de celle-ci.
var y = 88;
var sample2 = {
Y: 1,
ACT2: fonction (a) {
this.y = inner ();
fonction inner () {
retourner a * a;
}
}
}
échantillon2.Act2 (8);
console.log (échantillon2.y); // 64
console.log (y); // 88
Cependant, contrairement à l'intuition, le code intégré dans la fonction ne peut pas hériter de cela de l'extérieur; Autrement dit, dans la fonction intégrée, cela ne fait pas référence à l'objet qui appelle la méthode, mais à l'objet global:
La copie de code est la suivante:
// La fonction imbriquée n'hérite pas "ceci". La fonction "ce" dans l'objet imbriqué est un objet global
var échantillon3 = {
ACT3: fonction () {
intérieur();
fonction inner () {
console.log (this); // objet de fenêtre
}
}
}
échantillon3.ACT3 ();
Si vous avez vraiment besoin d'accéder à l'objet qui appelle la méthode dans la fonction intégrée, vous pouvez enregistrer cette valeur dans une variable dans la fonction externe:
La copie de code est la suivante:
// passe "ce" à la fonction imbriquée
var sample4 = {
ACT4: fonction () {
var self = this;
intérieur();
fonction inner () {
console.log (self); // objet {act4 = fonction ()}
}
}
}
échantillon4.Act4 ();