المعامل in في JavaScript

من موسوعة حسوب
مراجعة 04:17، 17 يناير 2018 بواسطة عبد اللطيف ايمش (نقاش | مساهمات)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

المعامل in يُعيد القيمة true إذا كانت الخاصية المُحدَّدة موجودةً في الكائن أو في سلسلة prototype الخاصة به.

البنية العامة

prop in object

prop

سلسلة نصية أو رمز يُمثِّل اسم الخاصية أو فهرس المصفوفة.

object

الكائن الذي سنتحقق من وجود الخاصية فيه أو في سلسلة prototype الخاصة به.

الوصف

يوضِّح المثال الآتي بعض حالات استخدام المعامل in:

// المصفوفات
var trees = ['redwood', 'bay', 'cedar', 'oak', 'maple'];
0 in trees        // true
3 in trees        // true
6 in trees        // false
// يجب تحديد الفهرس، وليس قيمة ذاك الفهرس
'bay' in trees  // false
// خاصية للكائن Array
'length' in trees // true
Symbol.iterator in trees // true (ES2015+)

// الكائنات المُعرَّفة مسبقًا
'PI' in Math; // true

// كائنات خاصة
var mycar = {make: 'Honda', model: 'Accord', year: 1998};
'make' in mycar; // true
'model' in mycar; // true

من الضروري أن توفِّر كائنًا على الطرف الأيمن للمعامل in، إذ يمكنك استخدام سلسلة نصية مُنشَأة عبر الدالة البانية String، لكن لا يمكنك استخدام سلسلة نصية أوليّة:

var color1 = new String('green');
'length' in color1; // true

var color2 = 'coral';
'length' in color2; // TypeError

استخدام المعامل in مع الخاصيات المحذوفة أو غير المُعرَّفة

إذا حذفتَ خاصية باستخدام المعامل delete فسيُعيد المعامل in القيمة false لتلك الخاصية:

var mycar = {make: 'Honda', model: 'Accord', year: 1998};
delete mycar.make;
'make' in mycar;  // false

var trees = new Array('redwood', 'bay', 'cedar', 'oak', 'maple');
delete trees[3];
3 in trees; // false

إذا ضبطتَ قيمة إحدى الخاصيات إلى undefined لكنك لم تحذفها، فسيُعيد المعامل in القيمة true لتلك الخاصية:

var mycar = {make: 'Honda', model: 'Accord', year: 1998};
mycar.make = undefined;
'make' in mycar; // true

var trees = new Array('redwood', 'bay', 'cedar', 'oak', 'maple');
trees[3] = undefined;
3 in trees; // true

الخاصيات الموروثة

سيُعيد المعامل in القيمة true للخاصيات الموروثة عبر سلسلة prototype.

'toString' in {}; // true

دعم المتصفحات

الميزة Chrome Firefox Internet Explorer Opera Safari
الدعم الأساسي نعم نعم نعم نعم نعم

مصادر ومواصفات