Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Mengulangi Sifat Objek dengan Selamat dalam JavaScript Menggunakan `untuk...dalam`?

Bagaimanakah Saya Boleh Mengulangi Sifat Objek dengan Selamat dalam JavaScript Menggunakan `untuk...dalam`?

Linda Hamilton
Linda Hamiltonasal
2024-12-29 20:37:18185semak imbas

How Can I Safely Iterate Over Object Properties in JavaScript Using `for...in`?

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!

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