ホームページ  >  に質問  >  本文

プロキシを使用して Node.js で PHP の __callStatic 属性をシミュレートする方法

<p>PHP の <code>__callStatic</code> マジック メソッドと同じ動作を Node.js で作成しようとしています。 </p> <p><code>Proxy</code> を使用して実行しようとしていますが、それが最良のオプションかどうかはわかりません。 </p> <p> <pre class="snippet-code-js lang-js prettyprint-override"><code>class Test { コンストラクター() { this.num = 0 } セット(数値) { this.num = this.num 番号 これを返す } 得る() { this.num を返す } } const TestFacade = 新しいプロキシ({}, { 取得: (_, キー) => { const テスト = 新しい Test() テスト[キー]を返す } }) // 実行メソッドチェーンは get で終了します console.log(TestFacade.set(10).set(20).get()) // 期待される結果: 30 // 返される結果: 0 // 新しい実行メソッド チェーンを開始し、最初のセットで Test クラスを再度インスタンス化します。 console.log(TestFacade.set(20).set(20).get()) // 期待される結果: 40 // 返される結果: 0</code></pre> </p> <p>問題は、<code>TestFacade</code> のプロパティにアクセスしようとするたびに、<code>get</code> トラップがトリガーされることです。私が必要とする動作は、<code>set</code> メソッドが呼び出されたときに、<code>Test</code> クラスの <code>this</code> を返し、それを保存することもできるということです。後で使用するためのインスタンスです。 </p> <pre class="brush:php;toolbar:false;">const testInstance = TestFacade.set(10) // set メソッドは Proxy の代わりに `Test` の `this` を返します</pre> <p>ご不明な点がございましたら、お知らせください。 </p>
P粉653045807P粉653045807432日前518

全員に返信(1)返信します

  • P粉549986089

    P粉5499860892023-09-05 00:15:19

    これが最善の選択肢かどうかはわかりません。しかし、apply トラップを使用して test クラス インスタンスをメソッドにバインドする get トラップで新しいプロキシを返すことで問題を解決しました。

    リーリー

    返事
    0
  • キャンセル返事