Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Memanjangkan Prototaip Tatasusunan dan Objek Dengan Selamat Tanpa Memecahkan Gelung Untuk Masuk?

Bagaimanakah Saya Boleh Memanjangkan Prototaip Tatasusunan dan Objek Dengan Selamat Tanpa Memecahkan Gelung Untuk Masuk?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-09 13:40:15668semak imbas

How Can I Safely Extend Array and Object Prototypes Without Breaking For-In Loops?

Memperluas Array dan Prototaip Objek Tanpa Berantakan Untuk Gelung Dalam

Apabila memanjangkan Array.prototype dan Object.prototype dengan kaedah pembantu, ia adalah penting untuk memastikan kaedah ini tidak mengganggu gelung for-in dengan muncul sebagai nilai. Ini amat penting dalam senario di mana kod lain bergantung pada gelung untuk masuk untuk mengakses nilai sahaja.

Elakkan Gelung Untuk-Dalam dengan Tatasusunan

Penyelesaian yang ideal adalah untuk elakkan menggunakan gelung untuk masuk dengan tatasusunan. Sebaliknya, gunakan kaedah lelaran khusus tatasusunan seperti .map() dan .filter() terbina dalam. Elakkan gelung untuk-dalam dalam fungsi generik yang mungkin menghadapi kedua-dua tatasusunan dan objek.

Gunakan hasOwnProperty() dengan Objek

Jika menggunakan gelung untuk-dalam tidak dapat dielakkan dalam generik fungsi, gunakan kaedah hasOwnProperty() untuk mengecualikan sifat yang diwarisi daripada prototaip:

for (var prop in anyObj)
    if (Object.prototype.hasOwnProperty.call(anyObj, prop))
        // do something

Sifat Tidak Boleh Dihitung dalam ECMAScript 5.1

Dalam ECMAScript 5.1, anda boleh menetapkan sifat menjadi tidak boleh dikira menggunakan Object.defineProperty():

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

Ini memastikan bahawa "mencari" kaedah tidak akan muncul dalam gelung untuk-dalam. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa pendekatan ini tidak disokong dalam pelayar lama. Pertimbangkan untuk menggunakan shim seperti ES5-shim untuk keserasian.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memanjangkan Prototaip Tatasusunan dan Objek Dengan Selamat Tanpa Memecahkan Gelung Untuk Masuk?. 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