Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Menambah Kaedah Prototaip pada Tatasusunan dan Objek Tanpa Menjejaskan Gelung `untuk...dalam`?
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!