Maison > interface Web > js tutoriel > Les proxys ES6 peuvent-ils émuler la fonctionnalité noSuchMethod pour les propriétés en JavaScript ?

Les proxys ES6 peuvent-ils émuler la fonctionnalité noSuchMethod pour les propriétés en JavaScript ?

Linda Hamilton
Libérer: 2024-10-18 14:19:03
original
1132 Les gens l'ont consulté

Can ES6 Proxies Emulate the noSuchMethod Feature for Properties in JavaScript?

Émulation de noSuchMethod pour les propriétés en JavaScript avec les proxys ES6

La fonctionnalité noSuchMethod permet implémenter un comportement personnalisé lors de l'accès à des méthodes inexistantes dans certaines implémentations JavaScript. Une fonctionnalité similaire peut être obtenue pour les propriétés utilisant des proxys ES6.

Utilisation de proxys ES6

Les objets proxy offrent un comportement personnalisé pour les opérations fondamentales telles que la recherche de propriétés. En définissant des pièges sur l'accès à la propriété, le comportement de noSuchMethod peut être émulé :

<code class="javascript">function enableNoSuchMethod(obj) {
  return new Proxy(obj, {
    get(target, p) {
      if (p in target) {
        return target[p];
      } else if (typeof target.__noSuchMethod__ == "function") {
        return function(...args) {
          return target.__noSuchMethod__.call(target, p, args);
        };
      }
    }
  });
}</code>
Copier après la connexion

Utilisation

Par exemple :

<code class="javascript">function Dummy() {
  this.ownProp1 = "value1";
  return enableNoSuchMethod(this);
}

Dummy.prototype.test = function() {
  console.log("Test called");
};

Dummy.prototype.__noSuchMethod__ = function(name, args) {
  console.log(`No such method ${name} called with ${args}`);
  return;
};

var instance = new Dummy();
console.log(instance.ownProp1); // value1
instance.test(); // Test called
instance.someName(1, 2); // No such method someName called with [1, 2]
instance.xyz(3, 4); // No such method xyz called with [3, 4]
instance.doesNotExist("a", "b"); // No such method doesNotExist called with ["a", "b"]</code>
Copier après la connexion

Cet exemple illustre que le proxy intercepte l'accès aux propriétés et, en cas d'inexistence, délègue à l'implémentation noSuchMethod, permettant un comportement personnalisé pour les propriétés qui n'ont pas été explicitement définies.

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