Anomali Paparan Objek dalam Konsol Penyemak Imbas
Dalam pengaturcaraan, penyahpepijatan melibatkan pemeriksaan sifat dan nilai objek dalam konsol. Walau bagaimanapun, pengguna mungkin menghadapi ketidakkonsistenan yang tidak dijangka apabila memaparkan objek dalam konsol penyemak imbas Chrome, Firefox dan Safari.
Chrome dan Safari lwn. Firefox: Percanggahan Nilai Objek
Pertimbangkan kod JavaScript yang disediakan dalam soalan:
<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>
Sementara Firefox Firebug memaparkan nilai yang dijangkakan sebagai:
Object { bar=1111} 1111 Object { bar=2222} 2222
Konsol Chrome dan Safari mempamerkan tingkah laku yang pelik:
Object { bar=2222} 1111 Object { bar=2222} 2222
Menjelaskan Percanggahan
Gelagat konsol Chrome dan Safari berpunca daripada keputusan reka bentuk. Apabila objek pada mulanya dihantar ke console.log, ia dianggap sebagai rujukan. Sebarang pengelogan seterusnya bagi objek yang sama akan memaparkan nilai semasanya, bukan nilai pada masa log awal.
Setelah tab objek dikembangkan dalam konsol, nilainya menjadi beku dan dipisahkan daripada objek asal . Akibatnya, menukar nilai objek selepas itu tidak akan menjejaskan paparannya dalam tab dikembangkan.
Penyelesaian
Untuk mengelakkan percanggahan ini, pembangun boleh menggunakan kaedah yang menyerikan objek menjadi nilai bukan objek, seperti rentetan JSON:
<code class="javascript">console.log(JSON.stringify(foo));</code>
Atas ialah kandungan terperinci Mengapa Anomali Paparan Objek Chrome dan Safari Console Berlaku Berbanding dengan Firefox?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!