Maison > interface Web > js tutoriel > Comment les classes ES6 peuvent-elles être utilisées pour étendre les fonctions et accéder aux données d'instance ?

Comment les classes ES6 peuvent-elles être utilisées pour étendre les fonctions et accéder aux données d'instance ?

Linda Hamilton
Libérer: 2024-10-21 06:09:30
original
225 Les gens l'ont consulté

How can ES6 Classes be Used to Extend Functions and Access Instance Data?

Extension de fonction avec les classes ES6

Dans ES6, des objets spéciaux peuvent être étendus, permettant l'héritage de l'objet Function. Bien qu'il soit possible d'appeler de tels objets en tant que fonctions, la mise en œuvre d'une logique pour cet appel peut s'avérer difficile.

Transmission de données d'instance à un appel de fonction

Lors de l'appel d'une classe en tant que fonction , cela fait référence à l'objet window. Pour accéder aux données d'instance, deux approches sont disponibles :

  1. Hardcoding : Forcer le super appel à attendre une chaîne de code contenant les données d'instance.
class Smth extends Function {
  constructor(x) {
    super("return " + JSON.stringify(x) + ";");
  }
}
Copier après la connexion
  1. Utilisation d'une fermeture : Renvoie une fonction de fermeture qui accède aux variables d'instance.
class Smth extends Function {
  constructor(x) {
    function smth() { return x; };
    Object.setPrototypeOf(smth, Smth.prototype);
    return smth;
  }
}
Copier après la connexion

Résumation de l'extension de fonction

Une approche plus généralisée consiste à créer une classe ExtensibleFunction qui gère l'extension :

class ExtensibleFunction extends Function {
  constructor(f) {
    return Object.setPrototypeOf(f, new.target.prototype);
  }
}
Copier après la connexion

Cette classe peut ensuite être utilisée pour étendre des classes spécifiques :

class Smth extends ExtensibleFunction {
  constructor(x) {
    super(() => { return x; }); // closure
  }
}
Copier après la connexion

En résumé, L'extension de Function avec les classes ES6 permet d'hériter du comportement de la fonction tout en personnalisant la logique d'appel. Différentes approches peuvent être utilisées pour donner accès aux données d'instance lors de l'appel de la fonction étendue.

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
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