Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Menambah Kaedah Prototaip pada Tatasusunan dan Objek Tanpa Menjejaskan Gelung `untuk...dalam`?

Bagaimanakah Saya Boleh Menambah Kaedah Prototaip pada Tatasusunan dan Objek Tanpa Menjejaskan Gelung `untuk...dalam`?

Barbara Streisand
Barbara Streisandasal
2024-12-10 09:25:09990semak imbas

How Can I Add Prototype Methods to Arrays and Objects Without Affecting `for...in` Loops?

Mengakses Kaedah Prototaip tanpa Menghalang Lelaran

Walaupun memanjangkan Array.prototype dan Object.prototype dengan kaedah pembantu adalah amalan biasa, kaedah ini sering muncul semasa gelung untuk masuk, berpotensi menyebabkan masalah. Untuk mengelakkan ini, pembangun boleh menghalang kaedah daripada muncul dalam gelung sedemikian dengan menetapkannya sebagai tidak boleh dikira.

Penyelesaian: Sifat Tidak Boleh Dihitung

EcmaScript 5.1 memperkenalkan kaedah Object.defineProperty(), yang boleh digunakan untuk mentakrifkan sifat tidak boleh dikira. Dengan menggunakan kaedah ini, pembangun boleh menetapkan atribut kaedah yang boleh dikira kepada palsu, menjadikannya tidak kelihatan kepada gelung untuk-dalam.

Contoh berikut menunjukkan cara untuk mentakrifkan kaedah tidak terhitung yang dipanggil "cari" pada Array.prototype:

Object.defineProperty(Array.prototype, "find", {
    enumerable: false,
    writable: true,
    value: function(testFun) {
        // Code to find element in the array
    }
});

Dengan takrifan ini, kaedah cari boleh digunakan seperti yang dimaksudkan, tetapi ia tidak akan muncul dalam gelung untuk masuk, memastikan bahawa gelung hanya berulang pada nilai tatasusunan sebenar.

Nota: Penyelesaian ini tidak disokong dalam pelayar lama yang tidak menyokong EcmaScript 5.1. Untuk penyemak imbas ini, pembangun boleh menggunakan perpustakaan shim seperti es5-shims untuk menyediakan keserasian. Selain itu, kaedah forEach(), yang tersedia dalam penyemak imbas moden, boleh digunakan sebagai alternatif kepada gelung for-in untuk lelaran pada tatasusunan tanpa menemui kaedah prototaip.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menambah Kaedah Prototaip pada Tatasusunan dan Objek Tanpa Menjejaskan Gelung `untuk...dalam`?. 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