Dans ce didacticiel, vous en apprendrez davantage sur ce mot-clé JavaScript à l'aide d'exemples.
En JavaScript, le this
mot - clé fait référence à l'objet où il est appelé.
1. cette portée mondiale interne
Lorsqu'il this
est utilisé seul, this
fait référence à l'objet global ( window
objet dans les navigateurs). Par exemple,
let a = this; console.log(a); // Window () this.name = 'Sarah'; console.log(window.name); // Sarah
Ici, this.name
c'est le même que window.name
.
2. cette fonction intérieure
Quand this
est utilisé dans une fonction, this
fait référence à l'objet global ( window
objet dans les navigateurs). Par exemple,
function greet() ( // this inside function // this refers to the global object console.log(this); ) greet(); // Window ()
3. cette fonction de constructeur interne
En JavaScript, les fonctions constructeur sont utilisées pour créer des objets. Lorsqu'une fonction est utilisée comme fonction constructeur, this
fait référence à l'objet à l'intérieur duquel elle est utilisée. Par exemple,
function Person() ( this.name = 'Jack'; console.log(this); ) let person1 = new Person(); console.log(person1.name);
Production
Personne (nom: "Jack") Jack
Ici, this
fait référence à l'objet person1. C'est pourquoi, person1.name
nous donne Jack.
Remarque : Quand this
est utilisé avec les classes ES6, il fait référence à l'objet dans lequel il est utilisé (similaire aux fonctions constructeur).
4. cette méthode d'objet intérieur
Quand this
est utilisé dans la méthode d'un objet, this
fait référence à l'objet dans lequel il se trouve. Par exemple,
const person = ( name : 'Jack', age: 25, // this inside method // this refers to the object itself greet() ( console.log(this); console.log(this.name); ) ) person.greet();
Production
(nom: "Jack", 25 ans, salue: ƒ) Jack
Dans l'exemple ci-dessus, this
fait référence à l' person
objet.
5. cette fonction intérieure intérieure
Lorsque vous accédez à l' this
intérieur d'une fonction interne (à l'intérieur d'une méthode), this
fait référence à l'objet global. Par exemple,
const person = ( name : 'Jack', age: 25, // this inside method // this refers to the object itself greet() ( console.log(this); // (name: "Jack", age… ) console.log(this.age); // 25 // inner function function innerFunc() ( // this refers to the global object console.log(this); // Window (… ) console.log(this.age); // undefined ) innerFunc(); ) ) person.greet();
Production
(nom: "Jack", 25 ans, saluer: ƒ) 25 Fenêtre (…) undefined
Ici, this
inside innerFunc()
fait référence à l' objet global car il se innerFunc()
trouve à l'intérieur d'une méthode.
Cependant, l' this.age
extérieur innerFunc()
fait référence à l' person
objet.
6. cette fonction de flèche intérieure
À l'intérieur de la fonction de flèche, this
fait référence à la portée parent. Par exemple,
const greet = () => ( console.log(this); ) greet(); // Window (… )
Les fonctions fléchées n'ont pas les leurs this
. Lorsque vous utilisez this
une fonction de flèche, this
fait référence à son objet d'étendue parent. Par exemple,
const greet = ( name: 'Jack', // method sayHi () ( let hi = () => console.log(this.name); hi(); ) ) greet.sayHi(); // Jack
Ici, this.name
à l'intérieur de la hi()
fonction se réfère à l' greet
objet.
Vous pouvez également utiliser la fonction flèche pour résoudre le problème lié undefined
à l'utilisation d'une fonction à l'intérieur d'une méthode (comme indiqué dans l'exemple 5). Par exemple,
const person = ( name : 'Jack', age: 25, // this inside method // this refers to the object itself greet() ( console.log(this); console.log(this.age); // inner function let innerFunc = () => ( // this refers to the global object console.log(this); console.log(this.age); ) innerFunc(); ) ) person.greet();
Production
(nom: "Jack", âge: 25 ans, salutation: ƒ) 25 (nom: "Jack", âge: 25 ans, salutation: ƒ) 25
Ici, innerFunc()
est défini à l'aide de la fonction flèche. Il prend this
de sa portée parent. Par conséquent, this.age
donne 25 .
Lorsque la fonction de flèche est utilisée avec this
, elle fait référence à la portée externe.
7. cette fonction intérieure avec le mode strict
Quand this
est utilisé dans une fonction en mode strict, this
est undefined
. Par exemple,
'use strict'; this.name = 'Jack'; function greet() ( // this refers to undefined console.log(this); ) greet(); // undefined
Remarque : lorsque vous utilisez this
une fonction en mode strict, vous pouvez utiliser l'appel de fonction JavaScript ().
Par exemple,
'use strict'; this.name = 'Jack'; function greet() ( console.log(this.name); ) greet.call(this); // Jack
Lorsque vous passez this
avec la call()
fonction, greet()
est traitée comme la méthode de l' this
objet (objet global dans ce cas).