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

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

Barbara Streisand
Lepaskan: 2024-12-18 04:57:10
asal
1001 orang telah melayarinya

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

Mentakrifkan Kaedah Tidak Boleh Dihitung dalam Tatasusunan dan Prototaip Objek

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
    }
}
Salin selepas log masuk

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
    }
});
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan