Membalas Sifat Objek: Menyingkap Misteri Propt
Apabila melelaran melalui sifat objek menggunakan gelung untuk...dalam, pembolehubah yang dikenali sebagai propt muncul. Pembolehubah ini mewakili setiap kunci sifat objek. Tetapi mengapa ia berfungsi dengan cara ini?
Sebabnya ialah Object.prototype mengandungi sifat tambahan yang diwarisi oleh semua objek. Sifat ini bukan sebahagian daripada objek tertentu tetapi dikongsi oleh semua objek. Sebagai contoh, toString dan hasOwnProperty ialah dua contoh biasa.
Untuk mengelak daripada mengulang sifat warisan ini secara tidak sengaja, adalah penting untuk memasukkan semakan tambahan: Object.prototype.hasOwnProperty.call(obj, prop). Semakan ini memastikan bahawa sifat yang diulang adalah milik objek secara khusus dan belum diwarisi daripada kelas asas.
Untuk kejelasan, berikut ialah contoh kod yang dikemas kini:
for (var prop in obj) { if (Object.prototype.hasOwnProperty.call(obj, prop)) { // do stuff } }
Selain itu, walaupun mungkin untuk menggunakan obj.hasOwnProperty(prop) sebaliknya, kaedah ini mungkin tidak berfungsi jika objek mempunyai medan yang tidak berkaitan dengan nama yang sama. Oleh itu, memanggil hasOwnProperty melalui Object.prototype lebih dipercayai.
Atas ialah kandungan terperinci Mengapa Lelaran `untuk...dalam` Kadangkala Termasuk Sifat Tidak Dijangka, dan Bagaimana Saya Boleh Mengelak Perkara Ini?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!