Maison > interface Web > js tutoriel > Créer des classes d'actions chaînées en JavaScript

Créer des classes d'actions chaînées en JavaScript

PHPz
Libérer: 2023-09-17 12:13:08
avant
1264 Les gens l'ont consulté

在 JavaScript 中创建链式操作类

Question

Nous devrions créer un type de données Streak défini par l'utilisateur en JavaScript qui peut être lié à une plage arbitraire avec valeurs et opérations 强> ou

La valeur peut être l'une des suivantes strings - L'opération

→ one, two three, four, five, six, seven, eight, nine
Copier après la connexion

peut être l'une des chaînes suivantes -

→ plus, minus
Copier après la connexion

Par exemple, si nous implémentons ce qui suit dans le contexte d'une classe -

Streak.one.plus.five.minus.three;
Copier après la connexion

alors la sortie devrait être -

const output = 3;
Copier après la connexion

Explication de la sortie

car l'opération qui se produit est -

1 + 5 - 3 = 3
Copier après la connexion

Exemple

Ce qui suit est le code-

Démonstration en temps réel

const Streak = function() {
   let value = 0;
   const operators = {
      'plus': (a, b) => a + b,
      'minus': (a, b) => a - b
   };
   const numbers = [
      'zero', 'one', 'two', 'three', 'four', 'five',
      'six', 'seven', 'eight', 'nine'
   ];
   Object.keys(operators).forEach((operator) => {
      const operatorFunction = operators[operator];
      const operatorObject = {};
      numbers.forEach((num, index) => {
         Object.defineProperty(operatorObject, num, {
            get: () => value = operatorFunction(value, index)
         });
      });
      Number.prototype[operator] = operatorObject;
   });
   numbers.forEach((num, index) => {
      Object.defineProperty(this, num, {
         get: () => {
            value = index;
            return Number(index);
         }  
      });
   });
};
const streak = new Streak();
console.log(streak.one.plus.five.minus.three);
Copier après la connexion

Sortie

Ce qui suit est la sortie de la console-

3
Copier après la connexion

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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal