Si vous souhaitez déterminer quelles sont les règles, la méthode est en fait très simple. En vérifiant sa position d'appel, déterminez-la lorsque la fonction est appelée. Suivons l'éditeur de Script Home pour apprendre à travers cet article
Quelques règles déterminent ce que cela signifie dans une fonction. C’est en fait très simple de déterminer de quoi il s’agit. La règle générale est de déterminer cela lorsqu'une fonction est appelée en vérifiant où elle a été appelée. Il suit ces règles, décrites ensuite par ordre de priorité.Règles
1. Si vous utilisez le nouveau mot-clé lors de l'appel d'une fonction, alors ceci dans la fonction est un tout nouvel objet.function ConstructorExample() { console.log(this); this.value = 10; console.log(this); } new ConstructorExample(); // -> {} // -> { value: 10 }
function fn() { console.log(this); } var obj = { value: 5 }; var boundFn = fn.bind(obj); boundFn(); // -> { value: 5 } fn.call(obj); // -> { value: 5 } fn.apply(obj); // -> { value: 5 }
var obj = { value: 5, printThis: function() { console.log(this); } }; obj.printThis(); // -> { value: 5, printThis: ƒ }
function fn() { console.log(this); } // 如果在浏览器里调用: fn(); // -> Window {stop: ƒ, open: ƒ, alert: ƒ, ...}
console.log(fn === window.fn); // -> true
const obj = { value: 'abc', createArrowFn: function() { return () => console.log(this); } }; const arrowFn = obj.createArrowFn(); arrowFn(); // -> { value: 'abc', createArrowFn: ƒ }
Application des règles
Regardons un exemple de code et appliquons ces règles. Essayez-le et voyez si vous pouvez comprendre ce que c'est dans différents appels de fonction.Déterminer quelle règle est appliquée
var obj = { value: 'hi', printThis: function() { console.log(this); } }; var print = obj.printThis; obj.printThis(); // -> {value: "hi", printThis: ƒ} print(); // -> Window {stop: ƒ, open: ƒ, alert: ƒ, ...}
Lorsque plusieurs règles sont appliquées
Lorsque plusieurs règles sont appliquées, utilisez la règle ayant la priorité la plus élevée dans la liste.var obj1 = { value: 'hi', print: function() { console.log(this); }, }; var obj2 = { value: 17 };
obj1.print.call(obj2); // -> { value: 17 }
new obj1.print(); // -> {}
Bibliothèque
Certaines bibliothèques lient parfois délibérément cette valeur à a dans certaines fonctions. Habituellement, la valeur la plus utile est liée à cela dans une fonction. Par exemple, jQuery le lie à un élément DOM et déclenche un événement dans un rappel. Si une bibliothèque a une valeur this qui n'est pas conforme aux règles ci-dessus, veuillez lire attentivement la documentation de la bibliothèque. Elle est probablement liée à l'aide de bind.Résumé
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!