Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Menambah Kaedah Pembantu pada Array.prototype dan Object.prototype Tanpa Menjejaskan Gelung for-in?

Bagaimanakah Saya Boleh Menambah Kaedah Pembantu pada Array.prototype dan Object.prototype Tanpa Menjejaskan Gelung for-in?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-10 21:26:13948semak imbas

How Can I Add Helper Methods to Array.prototype and Object.prototype Without Affecting for-in Loops?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn