Maison > interface Web > js tutoriel > Les fonctions fléchées peuvent-elles être utilisées comme méthodes d'objet ES6 ?

Les fonctions fléchées peuvent-elles être utilisées comme méthodes d'objet ES6 ?

Barbara Streisand
Libérer: 2024-12-21 19:12:17
original
821 Les gens l'ont consulté

Can Arrow Functions Be Used as ES6 Object Methods?

Fonctions fléchées dans les objets ES6 : un limbe syntaxique

Dans ES6, les méthodes d'objet peuvent être définies à l'aide de la syntaxe de fonction traditionnelle ou de la syntaxe de méthode concise. Cependant, pouvons-nous exploiter les fonctions fléchées nouvellement introduites dans ce contexte ?

Tentative d'utilisation et erreur rencontrée :

Tentatives d'utilisation des fonctions fléchées comme méthodes d'objet, comme indiqué ci-dessous , aboutit à un erreur :

var chopper = {
    owner: 'John',
    getOwner: () => { return this.owner; }
};
Copier après la connexion

Raisonnement :

Les fonctions fléchées ne fonctionnent pas comme prévu dans les méthodes objet car elles capturent la valeur lexicale this, qui est en dehors du contexte de l'objet. Il en résulte que this fait référence au ceci global ou au ceci de la fonction lexicalement englobante, et non à l'instance d'objet.

Alternatives et recommandations :

Pour les méthodes objet, traditionnelles La syntaxe de la fonction ou la syntaxe de la méthode ES6 doit être utilisée :

// Traditional function syntax
var chopper = {
    owner: 'Zed',
    getOwner: function() { return this.owner; }
};

// ES6 method syntax
var chopper = {
    owner: 'Zed',
    getOwner() { return this.owner; }
};
Copier après la connexion

Fonctions fléchées non liées (rejetées Proposition) :

Il y a eu une proposition pour des fonctions fléchées non liées qui introduiraient une syntaxe similaire aux fonctions fléchées mais avec une liaison this distincte. Cependant, cette proposition a été rejetée car elle réduisait uniquement le passe-partout sans offrir de nouvelles fonctionnalités.

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