Cara menggunakan Proksi untuk mensimulasikan atribut __callStatic PHP dalam Node.js
P粉653045807
2023-09-04 09:05:21
<p>Saya cuba mencipta gelagat yang sama dalam Node.js seperti kaedah ajaib PHP <code>__callStatic</code> </p>
<p>Saya cuba melakukannya menggunakan <kod>Proksi</kod> tetapi saya tidak pasti sama ada itu pilihan terbaik. </p>
<p>
<pre class="snippet-code-js lang-js prettyprint-override"><code>Ujian kelas {
pembina() {
this.num = 0
}
set(bilangan) {
this.num = ini.num + num
pulangkan ini
}
dapatkan() {
pulangkan this.num
}
}
const TestFacade = Proksi baharu({}, {
dapatkan: (_, kunci) =>
ujian const = Ujian baru ()
ujian pulangan[kunci]
}
})
//Rantai kaedah pelaksanaan berakhir dengan get
console.log(TestFacade.set(10).set(20).get())
//Hasil yang dijangkakan: 30
// Pulangan keputusan: 0
// Mulakan rantai kaedah pelaksanaan baharu dan nyatakan kelas Ujian sekali lagi dalam set pertama
console.log(TestFacade.set(20).set(20).get())
//Hasil yang dijangkakan: 40
// Kembalikan hasil: 0</code></pre>
</p>
<p>Masalahnya ialah setiap kali saya cuba mengakses sifat <code>TestFacade</code>, perangkap <code>get</code> Tingkah laku yang saya perlukan ialah apabila kaedah <kod>set</kod> ia akan mengembalikan <kod>ini</kod>Ujian</kod> contoh untuk kegunaan kemudian! </p>
<pre class="brush:php;toolbar:false;">const testInstance = TestFacade.set(10) // Kaedah set mengembalikan `this` `Test` dan bukannya Proxy</pre>
<p>Jika ada yang kurang jelas, sila beritahu saya. </p>
Saya tidak tahu sama ada ini adalah pilihan terbaik. Tetapi saya mengikat kaedah melalui contoh kelas
get
陷阱中返回一个新的代理来解决了这个问题,该代理使用apply
陷阱将test
: