Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Memanggil Kaedah Statik daripada Kaedah Kelas ES6 Bukan Statik?
Memanggil Kaedah Statik daripada Kaedah Kelas ES6 Bukan Statik
Apabila bekerja dengan kelas ES6, anda mungkin menghadapi keperluan untuk mengakses kaedah statik daripada dalam kaedah kelas bukan statik. Terdapat dua pilihan utama untuk mencapai ini: menggunakan pembina atau merujuk kepada nama kelas secara langsung. Walaupun mana-mana kaedah berdaya maju secara teknikal, ia mempamerkan gelagat yang berbeza dalam konteks pewarisan dengan kaedah statik yang ditindih.
Pilihan 1: Menggunakan Pembina
class SomeObject { constructor(n) { this.n = n; } static print(n) { console.log(n); } printN() { this.constructor.print(this.n); } }
Dalam ini contoh, cetakan kaedah statik diakses melalui pembina this.constructor. Pendekatan ini memastikan kaedah statik yang betul digunakan, walaupun kelas dilanjutkan dan kaedah statik ditindih dalam subkelas.
Pilihan 2: Merujuk kepada Nama Kelas Secara Terus
class SomeObject { constructor(n) { this.n = n; } static print(n) { console.log(n); } printN() { SomeObject.print(this.n); } }
Dalam kes ini, cetakan kaedah statik dirujuk oleh nama kelasnya. Kaedah ini pada asasnya statik dan sentiasa mengembalikan nilai asal yang ditakrifkan dalam kelas, tanpa mengira sebarang perhubungan warisan.
Pertimbangan Warisan dan Override
Pilihan antara menggunakan pembina atau nama kelas secara langsung menjadi penting apabila berurusan dengan warisan dan kaedah statik yang ditindih, seperti yang digambarkan di bawah:
class Super { static whoami() { return "Super"; } lognameA() { console.log(Super.whoami()); } lognameB() { console.log(this.constructor.whoami()); } } class Sub extends Super { static whoami() { return "Sub"; } }
Kes 1: Menggunakan Super.whoami()
Kes 2: Menggunakan this.constructor.whoami()
Gelagat dalam senario ini mungkin berbeza-beza bergantung pada sama ada kaedah statik sebenarnya ditindih atau tidak. Merujuk sifat statik melalui nama kelas memberikan gelagat statik yang benar, sambil menggunakan this.constructor membolehkan pertimbangan penghantaran dan warisan dinamik. Memilih kaedah yang sesuai bergantung pada tingkah laku yang diingini dalam konteks yang diberikan.
Atas ialah kandungan terperinci Bagaimana untuk Memanggil Kaedah Statik daripada Kaedah Kelas ES6 Bukan Statik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!