ใน Chrome console
วัตถุจะกำหนดวิธีการสองวิธีที่ดูเหมือนจะทำสิ่งเดียวกัน:
console.log(...)
console.dir(...)
ฉันอ่านบางแห่งออนไลน์ที่dir
ใช้สำเนาของวัตถุก่อนที่จะทำการบันทึกในขณะที่log
เพิ่งผ่านการอ้างอิงไปยังคอนโซลซึ่งหมายความว่าเมื่อคุณไปตรวจสอบวัตถุที่คุณบันทึกมันอาจมีการเปลี่ยนแปลง อย่างไรก็ตามการทดสอบเบื้องต้นบางอย่างชี้ให้เห็นว่าไม่มีความแตกต่างและทั้งคู่ประสบกับการแสดงวัตถุในสถานะที่แตกต่างจากเมื่อพวกเขาถูกบันทึก
ลองสิ่งนี้ในคอนโซล Chrome ( Ctrl+ Shift+ J) เพื่อดูว่าฉันหมายถึงอะไร:
> o = { foo: 1 }
> console.log(o)
> o.foo = 2
ตอนนี้ขยาย[Object]
ใต้คำสั่งบันทึกและแจ้งให้ทราบว่ามันแสดงให้เห็นว่าfoo
มีมูลค่า 2. เดียวกันเป็นจริงถ้าคุณทำซ้ำการทดลองใช้แทนdir
log
คำถามของฉันคือทำไมทั้งสองฟังก์ชั่นที่เหมือนกันดูเหมือนว่ามีอยู่ในconsole
?
console.dir
จะไม่เปลี่ยนแปลงดังนั้นจึงสร้างความแตกต่างอย่างมาก
console.dir()
: คุณสมบัตินี้ไม่ได้มาตรฐาน ! ดังนั้นอย่าใช้กับการผลิต;)
console.log([1,2])
และconsole.dir([1,2])
คุณจะเห็นความแตกต่าง