Lelaran melalui Sifat Objek
Dalam JavaScript, lelaran melalui sifat objek selalunya dilakukan menggunakan gelung untuk...dalam. Walau bagaimanapun, adalah penting untuk memahami cara gelung ini berfungsi.
Pertimbangkan kod berikut:
var obj = { name: "Simon", age: "20", clothing: { style: "simple", hipster: false } } for(var propt in obj){ console.log(propt + ': ' + obj[propt]); }
Kod ini merekodkan sifat objek obj menggunakan pembolehubah propt. Tetapi bagaimana propt tahu tentang sifat ini?
Memahami propt
Pembolehubah propt ialah pembolehubah sementara yang mewakili setiap kunci sifat dalam objek obj. Apabila gelung berjalan, ia melelang melalui sifat objek, memperuntukkan setiap kunci sifat untuk propt secara bergilir-gilir.
Ini kerana gelung untuk...dalam bukan kaedah atau sifat terbina. Ia merupakan binaan bahasa yang berulang ke atas sifat terhitung objek.
Semak hasOwnProperty()
Walau bagaimanapun, terdapat kemungkinan isu dengan pendekatan ini. Secara lalai, for...in loops juga berulang ke atas sifat yang diwarisi daripada rantai prototaip objek. Untuk mengelakkan ini, adalah disyorkan untuk menambah semakan hasOwnProperty() pada gelung, seperti:
for (var prop in obj) { if (Object.prototype.hasOwnProperty.call(obj, prop)) { // do stuff } }
Semakan ini memastikan bahawa hanya sifat khusus untuk objek obj disertakan dalam gelung.
Sebagai alternatif, kaedah hasOwnProperty() boleh dipanggil terus pada objek:
if (obj.hasOwnProperty(prop)) { // do stuff }
Pendekatan ini ialah lebih selamat, terutamanya apabila objek termasuk medan yang tidak berkaitan dengan nama yang sama seperti sifat terbina dalam.
Kesimpulan
Dengan memahami bagaimana gelung for...in berulang melalui sifat objek dan cara mengelakkan sifat yang diwarisi, pengaturcara boleh memanipulasi data objek dalam JavaScript dengan berkesan.
Atas ialah kandungan terperinci Bagaimanakah Gelung `for...in` JavaScript Berulang Melalui Sifat Objek dan Bagaimana Saya Boleh Mengelak Hartanah Diwarisi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!