Rumah >hujung hadapan web >tutorial js >Bagaimanakah anda boleh mencipta kaedah peribadi dalam JavaScript, dan apakah batasan pendekatan ini?
JavaScript, bahasa pengaturcaraan yang digunakan secara meluas, menawarkan pelbagai ciri untuk pembangun untuk mencipta aplikasi yang kompleks dan cekap. Satu aspek yang sering timbul dalam pengaturcaraan berorientasikan objek ialah keperluan untuk kaedah persendirian, iaitu kaedah yang hanya boleh diakses dalam kelas yang ditakrifkan.
Dalam JavaScript, kelas tradisional tidak disokong, tetapi JavaScript objek boleh digunakan untuk mencapai kefungsian yang serupa. Untuk mencipta kaedah awam dalam JavaScript, anda biasanya akan mentakrifkannya sebagai sifat prototaip fungsi pembina. Sebagai contoh, mari kita pertimbangkan contoh di bawah:
<code class="javascript">function Restaurant() {} Restaurant.prototype.buy_food = function() { // Something here } Restaurant.prototype.use_restroom = function() { // Something here }</code>
Seperti yang anda lihat, kaedah ini boleh diakses dan dipanggil biasanya menggunakan restaurant.buy_food() dan restaurant.use_restroom(), di mana restoran ialah contoh daripada kelas Restoran.
Sekarang, mari fokus pada cabaran mencipta kaedah peribadi dalam JavaScript. Kaedah persendirian ialah kaedah yang hanya boleh diakses dalam kelas yang sama. Dalam erti kata lain, kami ingin mentakrifkan kaedah yang dipanggil private_stuff yang boleh dipanggil oleh kedua-dua buy_food dan use_restroom, tetapi bukan oleh pengguna kelas.
Malangnya, hanya mengisytiharkan kaedah sebagai harta prototaip itu menang' t menjadikannya peribadi. JavaScript tidak mempunyai sokongan terbina dalam untuk enkapsulasi sebenar, bermakna mana-mana sifat objek, termasuk kaedah, boleh diakses dari luar.
Walau bagaimanapun, terdapat penyelesaian yang boleh mencapai hasil yang serupa dengan berkesan. Penutupan fungsi JavaScript membolehkan anda membuat skop peribadi dalam fungsi, menjadikan pembolehubah yang diisytiharkan dalam skop itu tidak boleh diakses di luar fungsi itu.
Untuk mencipta kaedah peribadi menggunakan pendekatan ini, anda akan mengisytiharkan kaedah dalam fungsi yang dipanggil oleh fungsi pembina. Contohnya:
<code class="javascript">function Restaurant() { var myPrivateVar; var private_stuff = function() { // Only visible inside Restaurant() myPrivateVar = "I can set this here!"; } this.use_restroom = function() { // use_restroom is visible to all private_stuff(); } this.buy_food = function() { // buy_food is visible to all private_stuff(); } }</code>
Dalam kes ini, fungsi private_stuff diisytiharkan dalam fungsi pembina Restoran, yang bermaksud ia hanya boleh diakses dalam skop pembina tersebut. Kini, kedua-dua buy_food dan use_restroom boleh memanggil private_stuff kerana mereka mempunyai akses kepadanya melalui skop kongsi mereka dalam pembina. Walau bagaimanapun, pengguna luar kelas tidak boleh memanggil private_stuff kerana ia tidak didedahkan dalam prototaip.
Adalah penting untuk ambil perhatian bahawa pendekatan ini mempunyai had: kaedah persendirian yang ditakrifkan dalam penutupan tidak boleh menjadi sebahagian daripada prototaip kelas. Akibatnya, mereka tidak boleh diakses menggunakan kata kunci ini dalam kelas. Had ini tidak dapat dielakkan kerana cara penutupan JavaScript berfungsi.
Atas ialah kandungan terperinci Bagaimanakah anda boleh mencipta kaedah peribadi dalam JavaScript, dan apakah batasan pendekatan ini?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!