Menetapkan Kaedah Prototaip Di Dalam Pembina: Kelemahan dan Isu Skop
Soalan ini membincangkan potensi kelemahan dan isu skop yang tidak dijangka yang mungkin timbul apabila menetapkan kaedah prototaip secara langsung dalam fungsi pembina. Perbincangan berpunca daripada keutamaan untuk menetapkan kaedah prototaip dalam badan fungsi, berbanding mengisytiharkannya secara berasingan di luar skop pembina.
Kelemahan:
Contoh Kod:
<code class="javascript">var Counter = function (initialValue) { var value = initialValue; // Local variable of the constructor // Assigning prototype method within the constructor Counter.prototype.get = function () { return value++; }; }; var c1 = new Counter(0); var c2 = new Counter(10); console.log(c1.get()); // Outputs 10, should output 0</code>
Dalam contoh ini, semua tika objek Counter berkongsi kaedah get prototaip yang sama, tetapi setiap tika kaedah menggunakan pembolehubah nilai setempat daripada tika sendiri, yang boleh membawa kepada hasil yang salah.
Pertimbangan Prestasi:
Walaupun penugasan kaedah prototaip dalam pembina mungkin kurang cekap dari segi penggunaan memori, sesetengah pakar berpendapat bahawa enjin JavaScript moden telah meningkatkan pengurusan memori, menjadikan penalti prestasi diabaikan. Penetapan kaedah langsung pada objek itu sendiri mungkin menawarkan prestasi masa jalan yang lebih baik dalam kes ini.
Amalan Terbaik:
Sebagai amalan terbaik umum, ia biasanya disyorkan untuk menetapkan prototaip kaedah secara berasingan di luar fungsi pembina, bukannya dalam badan fungsi. Ini memastikan kejelasan, menghapuskan kemungkinan isu skop dan memudahkan penyahpepijatan.
Atas ialah kandungan terperinci Mengapa Menetapkan Kaedah Prototaip Di Dalam Pembina Idea Buruk?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!