instanceof
ตัวถูกดำเนินการด้านซ้ายมือ (LHS) เป็นวัตถุจริงที่กำลังทดสอบกับตัวถูกดำเนินการด้านขวามือ (RHS) ซึ่งเป็นตัวสร้างที่แท้จริงของคลาส คำจำกัดความพื้นฐานคือ:
Checks the current object and returns true if the object
is of the specified object type.
นี่คือตัวอย่างที่ดีและนี่คือตัวอย่างที่นำมาโดยตรงจากเว็บไซต์นักพัฒนาของ Mozilla :
var color1 = new String("green");
color1 instanceof String; // returns true
var color2 = "coral"; //no type specified
color2 instanceof String; // returns false (color2 is not a String object)
สิ่งหนึ่งที่ควรค่าแก่การกล่าวถึงคือinstanceof
ประเมินว่าเป็นจริงถ้าวัตถุสืบทอดมาจากต้นแบบของคลาส:
var p = new Person("Jon");
p instanceof Person
นั่นคือp instanceof Person
เป็นความจริงตั้งแต่สืบทอดจากp
Person.prototype
ตามคำขอของ OP
ฉันได้เพิ่มตัวอย่างเล็ก ๆ ที่มีรหัสตัวอย่างและคำอธิบาย
เมื่อคุณประกาศตัวแปรคุณให้ประเภทเฉพาะ
ตัวอย่างเช่น
int i;
float f;
Customer c;
การแสดงดังกล่าวข้างต้นบางตัวแปรคือi
, และf
c
ชนิดที่มีinteger
, float
และผู้ใช้กำหนดCustomer
ชนิดข้อมูล ประเภทดังกล่าวข้างต้นอาจเป็นภาษาใดก็ได้ไม่ใช่แค่ JavaScript อย่างไรก็ตามด้วย JavaScript เมื่อคุณประกาศตัวแปรที่คุณไม่ได้กำหนดประเภทไว้อย่างชัดเจนvar x
x อาจเป็นตัวเลข / สตริง / ประเภทข้อมูลที่ผู้ใช้กำหนด ดังนั้นinstanceof
มันคืออะไรตรวจสอบวัตถุเพื่อดูว่าเป็นชนิดที่ระบุไว้จากข้างบนรับCustomer
วัตถุที่เราสามารถทำได้:
var c = new Customer();
c instanceof Customer; //Returns true as c is just a customer
c instanceof String; //Returns false as c is not a string, it's a customer silly!
ดังกล่าวข้างต้นที่เราเคยเห็นว่ามีการประกาศกับชนิดc
Customer
เราเพิ่งตรวจสอบแล้วว่าเป็นประเภทCustomer
หรือไม่ แน่นอนมันจะกลับมาจริง จากนั้นยังคงใช้วัตถุที่เราตรวจสอบถ้ามันเป็นCustomer
String
ไม่ใช่แน่นอนString
เราCustomer
ไม่ใช่วัตถุที่ไม่ใช่String
วัตถุวัตถุ ในกรณีนี้มันจะคืนค่าเท็จ
มันง่ายจริงๆ!