Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Mengulangi Sifat Objek dengan Selamat dalam JavaScript Menggunakan `untuk...dalam`?
Menyalurkan Sifat Objek dengan for...in
Apabila melelaran melalui sifat objek menggunakan gelung for...in, pembolehubah gelung propt mewakili kunci harta yang sedang diakses. Walau bagaimanapun, ia bukan kaedah atau sifat terbina dalam untuk objek.
Gelung untuk...dalam mendapatkan semula kedua-dua sifat daripada objek itu sendiri dan sifat yang diwarisi daripada prototaipnya. Ini boleh menjadi masalah kerana sifat yang diwarisi mungkin tidak dimaksudkan untuk disertakan dalam lelaran.
Menggunakan hasOwnProperty untuk Lelaran Tepat
Untuk menyelesaikan isu ini, anda boleh menambah semakan hasOwnProperty dalam gelung untuk...dalam:
for (var prop in obj) { if (Object.prototype.hasOwnProperty.call(obj, prop)) { // Do stuff } }
Kaedah hasOwnProperty menyemak sama ada harta ditakrifkan secara langsung dalam objek, tidak diwarisi daripada prototaipnya. Dengan menggunakan semakan ini, anda boleh mengecualikan sifat yang diwarisi daripada lelaran.
hasOwnProperty lwn. Memanggil Melalui Objek
Sebagai alternatif, anda boleh memanggil hasOwnProperty melalui objek itu sendiri:
if (obj.hasOwnProperty(prop)) { // Do stuff }
Walau bagaimanapun, ini mungkin gagal jika objek mempunyai medan yang tidak berkaitan dengan nama yang sama seperti hasOwnProperty, seperti:
var obj = { foo: 42, hasOwnProperty: 'lol' }; obj.hasOwnProperty('foo'); // TypeError
Untuk mengelakkan isu ini, adalah lebih selamat untuk memanggil hasOwnProperty melalui Object.prototype sebaliknya:
Object.prototype.hasOwnProperty.call(obj, 'foo'); // True
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengulangi Sifat Objek dengan Selamat dalam JavaScript Menggunakan `untuk...dalam`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!