Dalam pembangunan web, memahami gelagat objek dalam konsol penyemak imbas adalah penting. Walau bagaimanapun, percanggahan dalam perwakilan objek merentas penyemak imbas, seperti Chrome, Firefox dan Safari, boleh menimbulkan cabaran.
Pertimbangkan JavaScript berikut:
<code class="javascript">var foo = {bar : 1111}; console.log(foo); console.log(foo.bar); foo.bar = 2222; console.log(foo); console.log(foo.bar);</code>
Dalam konsol Firefox, gelagat yang diharapkan ialah diperhatikan:
Object { bar=1111} 1111 Object { bar=2222} 2222
Walau bagaimanapun, dalam konsol Safari dan Chrome, gelagat berbeza berlaku:
Object { bar=2222} 1111 Object { bar=2222} 2222
Perbezaan ini berpunca daripada keputusan reka bentuk dalam konsol Chrome dan Safari. Apabila console.log digunakan dengan argumen objek, ia log rujukan objek. Setelah tab objek dibuka, objek kekal malar dalam konsol, merujuk kepada nilai terkini.
Dalam Chrome dan Safari, objek "dicache" dengan berkesan apabila membuka tab. Log seterusnya bagi objek yang sama merujuk kepada objek cache yang sama, mencerminkan keadaan semasanya.
Tingkah laku ini tidak dianggap sebagai pepijat oleh pasukan pembangunan penyemak imbas. Ia adalah "isu" yang diketahui yang terhasil daripada pilihan reka bentuk tertentu.
Untuk mengurangkan isu ini, kaedah alternatif boleh digunakan untuk mendapatkan perwakilan bukan objek bagi objek. Contohnya, mensiri objek menggunakan JSON.stringify() akan memberikan gambaran keadaannya pada masa pengelogan.
Atas ialah kandungan terperinci Mengapa Perwakilan Objek Berbeza dalam Konsol Penyemak Imbas Seperti Chrome, Firefox dan Safari?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!