عملگر instanceof

عملگر instanceof در جاوااسکریپت، به شما اجازه می‌دهد که تست کنید که آیا یک شیء یک نمونه از یک نوع خاص (کلاس، زیر کلاس، …) است یا نه. عملگر instanceof به دو عملوند نیاز دارد و یک مقدار بولی را برمی گرداند. به عنوان مثال، فرض کنید یک کلاس به نام Animel داریم، سپس یک نمونه از آن ایجاد می‌کنیم :

class Animal
{
    
}

var myAnimal = new Animal();

if (myAnimal instanceof Animal)
{
    console.log("myAnimal is an Animal!");
} 
myAnimal is an Animal!

رفتار عملگر instanceof را در این مثال مشاهده کردید. همانطور که می‌بینید از آن به عنوان شرط در عبارت if استفاده شده است. کاربرد آن در مثال بالا این است که چک می‌کند که آیا شیء myAnimal یک نمونه از Animal است و چون نتیجه درست است کدهای داخل دستور if اجرا می‌شود. این عملگر همچنین می‌تواند چک کند که آیا یک شیء خاص در سلسله مراتب وراثت یک نوع خاص است. به این مثال توجه کنید :

class Animal
{
    
}

class Dog extends Animal
{

}

var mydog = new Dog();

if (mydog instanceof Animal)
{
    console.log("mydog is an Animal!");
} 
myDog is an Animal!

همانطور که در مثال بالا می‌بینید ما یک کلاس به نام Dog ایجاد کرده‌ایم که از کلاس Animal ارث می‌برد. سپس یک نمونه از این کلاس (Dog) ایجاد می‌کنیم و سپس با استفاده از عملگر instanceof تست می‌کنیم که آیا نمونه ایجاد شده جز کلاس Animal است یا یک کلاس مشتق شده از کلاس Animal می‌باشد. از آنجاییکه کلاس Dog از کلاس Animal ارث می‌برد (سگ من یک حیوان است.)، نتیجه عبارت درست (true) است. حال جمله بالا را تغییر دهیم: ” حیوان من یک سگ است”. وقتی جمله برعکس می‌شود چه اتفاقی می افتد؟

var myAnimal = new Animal();

if (myAnimal instanceof Dog)
{
    console.log("myAnimal is a Dog!");
} 

این باعث خطا نمی‌شود، ولی هیچ پیغامی را نیز نمایش نمی دهد.