Object.is()‎

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

الدالة Object.is()‎ تُحدِّد إن كانت تملك القيمتان المُمررتان إليها نفس القيمة.

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

Object.is(value1, value2);

value1

القيمة الأولى التي نريد مقارنتها.

value2

القيمة الثانية التي نريد مقارنتها.

القيمة المعادة

قيمة منطقية (Boolean) تبيّن إذا كانت القيمتان متساويتين أم لا.

الوصف

الدالة Object.is()‎ تُحدِّد إن كانت تملك القيمتان المُمررتان إليها نفس القيمة. ويكون للقيمتين نفس القيمة إذا كانت كلتاهما:

  • undefined
  • null
  • كلتاهما true أو كلتاهما false
  • كلتاهما عبارة عن سلسلة نصية لها الطول نفسه والمحارف نفسها
  • تشيران إلى الكائن نفسه
  • كلتاهما أعداد و:
    • كلتاهما +0
    • كلتاهما -0
    • كلتاهما NaN
    • ليستا 0 أو NaN ويحملان نفس القيمة

ما سبق لا يكافئ استخدام معامل المساواة ==، فالمعامل == يُطبِّق إجراءات على كلا القيمتين إن لم تكونا من نوعٍ واحد قبل اختبار مساواتها (مما يعني أنَّ نتيجة التعبير ‎"" == false هي true)، لكن الدالة Object.is()‎ لا تحوِّل أيّة قيمة.

ولا يكافئ أيضًا المعامل ===، فالمعامل === (إضافةً إلى المعامل ==) سيعامل القيمتين -0 و +0 على أنهما متساويتين، ويعامل Number.NaN على أنه لا يساوي NaN.

أمثلة

أمثلة عن استخدام قيم مختلفة مع الدالة Object.is()‎:

Object.is('foo', 'foo');     // true
Object.is(window, window);   // true

Object.is('foo', 'bar');     // false
Object.is([], []);           // false

var test = { a: 1 };
Object.is(test, test);       // true

Object.is(null, null);       // true

// حالات خاصة
Object.is(0, -0);            // false
Object.is(-0, -0);           // true
Object.is(NaN, 0/0);         // true

تعويض نقص دعم المتصفحات

الشيفرة الآتية تعوّض نقص دعم المتصفحات للدالة Object.is()‎:

if (!Object.is) {
  Object.is = function(x, y) {
    // SameValue algorithm
    if (x === y) { // Steps 1-5, 7-10
      // Steps 6.b-6.e: +0 != -0
      return x !== 0 || 1 / x === 1 / y;
    } else {
     // Step 6.a: NaN == NaN
     return x !== x && y !== y;
    }
  };
}

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

الميزة Chrome Firefox Internet Explorer Opera Safari
الدعم الأساسي 30 22 غير مدعومة مدعومة 9

على النقيض من متصفح IE، يدعم متصفح Edge هذه الميزة.

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