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
Lepaskan: 2024-12-29 20:37:18
asal
228 orang telah melayarinya

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

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

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

Untuk mengelakkan isu ini, adalah lebih selamat untuk memanggil hasOwnProperty melalui Object.prototype sebaliknya:

Object.prototype.hasOwnProperty.call(obj, 'foo'); // True
Salin selepas log masuk

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 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