Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Menambah Kaedah Pembantu pada Array.prototype dan Object.prototype Tanpa Menjejaskan Gelung for-in?
Mentakrifkan Kaedah Pembantu pada Array.prototype dan Object.prototype Tanpa Memaparkannya dalam Gelung untuk-dalam
Melanjutkan prototaip terbina dalam, seperti sebagai Array.prototype dan Object.prototype, boleh menyediakan kaedah pembantu yang memudahkan pengekodan. Walau bagaimanapun, kaedah ini secara tidak dijangka boleh muncul dalam gelung untuk masuk, mengganggu kefungsian yang dijangkakan.
Masalah
Menambahkan kaedah pembantu pada Array.prototype, seperti kaedah cari yang disebut dalam soalan, boleh memperkenalkan sifat yang tidak diingini apabila melelakan tatasusunan dengan gelung untuk masuk. Untuk mengelakkan isu ini dan memastikan bahawa hanya elemen tatasusunan dikembalikan dalam gelung, adalah penting untuk mentakrifkan kaedah ini dengan betul supaya ia tidak muncul sebagai sifat.
Penyelesaian: Sifat Tidak Boleh Dihitung
EcmaScript 5.1 memperkenalkan konsep sifat tidak terhitung. Dengan menetapkan pilihan enumerable kepada false apabila mentakrifkan kaedah pada prototaip, anda boleh menghalangnya daripada disenaraikan semasa lelaran untuk masuk.
Object.defineProperty(Array.prototype, "find", { enumerable: false, writable: true, value: function(testFun) { // Code to find element in array } });
Dengan pendekatan ini, kaedah cari akan tersedia untuk manipulasi tatasusunan tetapi tidak akan disertakan dalam keputusan gelung untuk-dalam, memastikan ia tidak mengganggu kelakuan yang dijangkakan gelung.
Sokongan Penyemak Imbas Warisan
Untuk penyemak imbas yang tidak menyokong sifat yang tidak boleh dikira, pertimbangkan untuk menggunakan kaedah sandaran atau mengesahkan kehadiran harta itu menggunakan Object.prototype. hasOwnProperty.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menambah Kaedah Pembantu pada Array.prototype dan Object.prototype Tanpa Menjejaskan Gelung for-in?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!