Dalam JavaScript, memanjangkan Array.prototype dan Object.prototype dengan kaedah pembantu boleh meningkatkan fungsi kod. Walau bagaimanapun, kaedah ini mungkin muncul sebagai sifat apabila melelaran ke atas objek menggunakan gelung untuk dalam, menyebabkan potensi isu.
Untuk mengelakkan ini, pertimbangkan untuk mengelak daripada gelung dalam dengan tatasusunan. Sebagai alternatif, gunakan hasOwnProperty untuk menapis sifat yang diwarisi daripada prototaip:
for (var prop in anyObj) { if (Object.prototype.hasOwnProperty.call(anyObj, prop)) { // Do something } }
Walau bagaimanapun, pendekatan ini mungkin tidak sesuai untuk fungsi generik yang mengendalikan objek dengan prototaip yang tidak diketahui.
Penyelesaian yang lebih moden adalah untuk mentakrifkan sifat tidak terhitung menggunakan defineProperty:
Object.defineProperty(Array.prototype, "find", { enumerable: false, writable: true, value: function(testFun) { // Code to find element in array } });
Ini memastikan kaedah cari tidak disertakan dalam untuk dalam gelung, mengekalkan kejelasan kod dan mencegah kemungkinan konflik.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menambah Kaedah Pembantu pada Prototaip Tatasusunan dan Objek Tanpa Menjejaskan Gelung `untuk...dalam`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!