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!