ฉันเคยใช้อินสแตนซ์และประเภทของบางครั้งก่อนหน้านี้โดยเฉพาะอย่างยิ่ง typeof และฉันได้ใช้มันมากขึ้น วันนี้ฉันได้ศึกษาซอร์สโค้ด ext และใช้อินสแตนซ์ของหลายสถานที่ ทันใดนั้นฉันก็รู้สึกว่าพวกเขาค่อนข้างคล้ายกัน แต่พวกเขาควรจะแตกต่างกัน ฉันอ่านบทความออนไลน์และมีความเข้าใจบางอย่างเกี่ยวกับความสัมพันธ์ระหว่างพวกเขา
อินสแตนซ์และ typeof สามารถใช้เพื่อตรวจสอบว่าตัวแปรว่างเปล่าหรือประเภทของตัวแปรประเภทใด
typeof ใช้เพื่อรับประเภทของตัวแปร โดยทั่วไปแล้ว Typeof สามารถส่งคืนผลลัพธ์ต่อไปนี้ได้เท่านั้น: หมายเลข, บูลีน, สตริง, ฟังก์ชั่น, วัตถุ, ไม่ได้กำหนด เราสามารถใช้ typeof เพื่อให้ได้ว่าตัวแปรมีอยู่หรือไม่เช่นถ้า (typeof a! = "undefined") {} แทนที่จะใช้ IF (a) เพราะถ้า A ไม่มีอยู่ (ไม่ประกาศ) ข้อผิดพลาดจะเกิดขึ้น สำหรับวัตถุพิเศษเช่นอาร์เรย์ null ฯลฯ คุณจะส่งคืนวัตถุ นี่คือข้อ จำกัด ของ typeof
หากเราต้องการได้รับว่าวัตถุเป็นอาร์เรย์หรือพิจารณาว่าตัวแปรเป็นอินสแตนซ์ของวัตถุเราต้องเลือกใช้อินสแตนซ์ของ InstanceOF ใช้เพื่อพิจารณาว่าตัวแปรเป็นอินสแตนซ์ของวัตถุหรือไม่ ตัวอย่างเช่น var a = new Array (); Alert (A อินสแตนซ์ของอาร์เรย์); จะส่งคืนจริงและการแจ้งเตือน (วัตถุอินสแตนซ์ของ) จะส่งคืนจริง นี่เป็นเพราะอาร์เรย์เป็นคลาสย่อยของวัตถุ ตัวอย่างเช่น: ฟังก์ชั่นการทดสอบ () {}; var a = การทดสอบใหม่ (); การแจ้งเตือน (การทดสอบอินสแตนซ์ของ) จะส่งคืนจริง
เมื่อพูดถึงอินสแตนซ์ของเราจำเป็นต้องแทรกปัญหาอีกหนึ่งข้อนั่นคือข้อโต้แย้งฟังก์ชั่น เราทุกคนอาจคิดว่าข้อโต้แย้งเป็นอาร์เรย์ แต่ถ้าเราใช้อินสแตนซ์ของการทดสอบเราจะพบว่าอาร์กิวเมนต์ไม่ใช่วัตถุอาร์เรย์แม้ว่าพวกเขาจะดูคล้ายกันมาก