Menetapkan Kaedah Prototaip Di Dalam Pembina: Potensi Kelemahan dan Isu Skop
Sambil mengutamakan pilihan gaya, adalah penting untuk menangani potensi kelemahan dan skop dikaitkan dengan menetapkan kaedah prototaip di dalam fungsi pembina. Pertimbangkan struktur kod berikut:
Struktur 1:
<code class="javascript">var Filter = function(category, value) { this.category = category; this.value = value; // product is a JSON object Filter.prototype.checkProduct = function(product) { // run some checks return is_match; } };</code>
Struktur 2:
<code class="javascript">var Filter = function(category, value) { this.category = category; this.value = value; }; Filter.prototype.checkProduct = function(product) { // run some checks return is_match; }</code>
Kelemahan dan Isu Skop:
1. Tugasan Prototaip Berulang dan Penciptaan Fungsi:
Dalam Struktur 1, prototaip ditetapkan semula berulang kali dengan setiap penciptaan tika. Ini bukan sahaja mengulangi tugasan tetapi juga mencipta objek fungsi baharu untuk setiap tika.
2. Isu Skop Tidak Dijangka:
Struktur 1 boleh membawa kepada isu skop yang tidak dijangka. Jika kaedah prototaip merujuk pembolehubah tempatan pembina, struktur pertama boleh mengakibatkan tingkah laku yang tidak diingini. Pertimbangkan contoh berikut:
<code class="javascript">var Counter = function(initialValue) { var value = initialValue; // product is a JSON object 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 kes ini, kaedah get yang dibuat untuk setiap tika berkongsi objek prototaip yang sama. Akibatnya, pembolehubah nilai ditambah dan dikongsi merentas kejadian, membawa kepada output yang salah.
Pertimbangan Lain:
Kesimpulan:
Walaupun pilihan peribadi mungkin berbeza-beza, adalah penting untuk mengetahui potensi kelemahan dan isu skop yang berkaitan dengan menetapkan kaedah prototaip di dalam fungsi pembina. Untuk kebolehpercayaan dan kebolehselenggaraan, struktur kod kedua biasanya disyorkan.
Atas ialah kandungan terperinci Mengapa memberikan kaedah prototaip di dalam fungsi pembina secara amnya dianggap sebagai amalan buruk dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!