Dalam JavaScript, terdapat dua pendekatan untuk mentakrifkan kaedah awam untuk kelas: melalui prototaip atau menggunakan pembina fungsi. Walaupun pendekatan prototaip dikatakan lebih cekap disebabkan rujukan fungsi yang dikongsi, terdapat potensi kesan prestasi untuk dipertimbangkan.
function MyClass() { var privateInstanceVariable = 'foo'; this.myFunc = function() { alert(privateInstanceVariable ); } }
Dalam kaedah ini, setiap tika kelas mempunyai pembolehubah contoh peribadinya sendiri dan salinan kaedah myFuncnya sendiri.
function MyClass() { } MyClass.prototype.myFunc = function() { alert("I can't use private instance variables. :("); }
Di sini, kaedah myFunc ditakrifkan pada prototaip kelas. Semua kejadian berkongsi rujukan fungsi yang sama, berpotensi meningkatkan prestasi.
Menurut ujian prestasi JavaScript (https://jsperf.app/prototype-vs-this), kaedah pengisytiharan melalui prototaip memang lebih pantas. Walau bagaimanapun, kepentingan perbezaan ini boleh dipersoalkan.
Melainkan anda mencipta dan memusnahkan beribu-ribu objek berulang kali, kesan prestasi mungkin boleh diabaikan. Dalam kebanyakan kes, menggunakan pendekatan yang lebih masuk akal untuk kebolehbacaan dan kebolehselenggaraan kod anda adalah lebih penting.
Adalah penting untuk ambil perhatian bahawa walaupun Kaedah 1 menyokong pembolehubah contoh peribadi, ia hanya dianggap secara konvensional peribadi. Pembangun masih boleh mengaksesnya jika mereka mahu. Untuk melindungi pembolehubah daripada akses luar, pertimbangkan untuk mengisytiharkannya dengan garis bawah terkemuka (cth., _process()) atau melaksanakan getter dan setter tersuai untuk menguatkuasakan enkapsulasi.
Atas ialah kandungan terperinci Kaedah Prototaip vs Pembina dalam JavaScript: Adakah Satu Benar-benar Lebih Cepat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!