Maison > interface Web > js tutoriel > Comment les fonctions fléchées gèrent-elles le mot-clé « this » en JavaScript ?

Comment les fonctions fléchées gèrent-elles le mot-clé « this » en JavaScript ?

Patricia Arquette
Libérer: 2024-12-10 10:19:10
original
483 Les gens l'ont consulté

How Do Arrow Functions Handle the `this` Keyword in JavaScript?

Fonctions fléchées et « ceci »

Dans ES6, les fonctions fléchées introduisent une nouvelle approche de la définition des méthodes. Cependant, il existe une différence notable entre les fonctions fléchées et les fonctions traditionnelles lorsqu'il s'agit d'accéder au mot-clé « this ».

Le problème :

Considérez le code suivant :

var person = {
  name: "jason",

  shout: () => console.log("my name is ", this.name)
}

person.shout() // Should print out my name is jason
Copier après la connexion

Bien que le résultat escompté soit d'imprimer « je m'appelle Jason », la console affiche uniquement « je m'appelle ». En effet, les fonctions fléchées se comportent différemment des fonctions traditionnelles en termes de liaison « ceci ».

L'explication :

Contrairement aux fonctions traditionnelles, les fonctions fléchées ne lient pas le ' this' mot-clé à la portée contenant. Au lieu de cela, ils héritent de la liaison « this » du contexte environnant. Dans l'exemple ci-dessus, le « ceci » dans la fonction flèche fait référence à l'objet global, et non à l'objet « personne ».

La solution :

Il existe plusieurs façons de résoudre ce problème :

  1. Utilisez un lien Fonction :
// Bind 'this' to the 'person' object
var shoutBound = function() { console.log("my name is ", this.name); }.bind(person);

// Assign the bound function to the 'shout' property
person.shout = shoutBound;
Copier après la connexion
  1. Utiliser une fonction traditionnelle :
// Define a traditional function with 'this' bound to 'person'
person.shout = function() { console.log("my name is ", this.name); };
Copier après la connexion
  1. Utiliser Déclaration de la méthode ES6 :
// ES6 method declaration implicitly binds 'this' to the object
person = {
  name: "jason",

  shout() {
    console.log("my name is ", this.name);
  }
};
Copier après la connexion

En comprenant les différents comportements de fonctions fléchées concernant la liaison « ce », vous pouvez écrire du code efficace et flexible dans ES6.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal