Comment utiliser Proxy pour simuler l'attribut __callStatic de PHP dans Node.js
P粉653045807
2023-09-04 09:05:21
<p>J'essaie de créer le même comportement dans Node.js que la méthode magique PHP <code>__callStatic</code> </p>
<p>J'essaie de le faire en utilisant <code>Proxy</code> mais je ne sais pas si c'est la meilleure option. </p>
<p>
<pre class="snippet-code-js lang-js Prettyprint-override"><code>class Test {
constructeur() {
ce.num = 0
}
ensemble(num) {
ceci.num = ceci.num + num
rends ceci
}
obtenir() {
renvoyer ce.num
}
}
const TestFacade = nouveau proxy ({}, {
obtenir : (_, clé) =>
const test = nouveau Test()
retourner le test[clé]
}
})
//La chaîne de méthodes d'exécution se termine par get
console.log(TestFacade.set(10).set(20).get())
//Résultat attendu : 30
//Résultat renvoyé : 0
// Démarre une nouvelle chaîne de méthodes d'exécution et instancie à nouveau la classe Test dans le premier ensemble
console.log(TestFacade.set(20).set(20).get())
//Résultat attendu : 40
// Renvoie le résultat : 0</code></pre>
</p>
<p>Le problème est que chaque fois que j'essaie d'accéder aux propriétés de <code>TestFacade</code>, le piège <code>get</code> Le comportement dont j'ai besoin est que lorsque la méthode <code>set</code> est appelée, elle renvoie <code>this</code> exemple pour une utilisation ultérieure ! </p>
<pre class="brush:php;toolbar:false;">const testInstance = TestFacade.set(10) // La méthode set renvoie `this` de `Test` au lieu de Proxy</pre>
<p>Si quelque chose n’est pas clair, faites-le-moi savoir. </p>
Je ne sais pas si c’est la meilleure option. Mais je me lie à la méthode via l'instance de classe
get
陷阱中返回一个新的代理来解决了这个问题,该代理使用apply
陷阱将test
: