اذهب إلى المحتوى

السؤال

نشر

يمكننا عمل كائنات Objects من صنف Class معين عبر الكلمة المفتاحية new في جافاسكريبت:

class User {
	// ... 
}

const user1 = new User();

الآن أريد عمل شرط للتأكد من أن المتغير user1 عبارة عن نسخة instance من الصنف User، كيف أقوم بهذا الأمر؟

Recommended Posts

  • 1
نشر

توفر لغة JavaScript العديد من الطرق التي تُمكنك من التأكد من نوع كائن Object معين، هنا بعضها:

إستخدام typeof

تستخدم هذه الطريقة للتأكد من أن متغير ما عبارة عن كائن Object من صنف آخر:

class User {}
const user1 = new User();

typeof User;	// 'function'
typeof user1;	// 'object'

إستخدام instanceof

توفر هذه الطريقة إمكانية التأكد من أن كائن Object معين عبارة عن نسخة instance من صنف ما:

user1 instanceof User;	// true
user1 instanceof Array;	// false

التابع isPrototypeOf

بما أن لغة JavaScript تعتمد بشكل أساسي على prototype، فيمكننا إستخدام التابع isPrototypeOf للتأكد من أن كائن ما عبارة عن نسخة من صنف  معين:

User.prototype.isPrototypeOf(user1); 	// true

إستخدام constructor.name

هذه طريقة مختلفة لأداء نفس مهمة instanceof السابقة:

user1.constructor.name === "User";	// true

ملاحظة: لا يًفصل إستعمال هذه الطريقة إذا كنت تستعمل أدوات مثل Uglify أو minify التي تغير أسماء الأصناف لتصبح أقصر، لكن يمكن في هذه الحالة إستخدام المقارنة المباشرة باسم الصنف class بدون مشكلة على النحو التالي:

user1.constructor.name;   // == "User"
User.name;	// User

user1.constructor.name === User.name;	// true

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...