الفرق بين المراجعتين لصفحة: «JavaScript/Object/is»

من موسوعة حسوب
لا ملخص تعديل
 
ط استبدال النص - '\[\[تصنيف:(.*)\]\]' ب'{{SUBPAGENAME}}'
 
سطر 91: سطر 91:
*مسودة المعيار [https://tc39.github.io/ecma262/#sec-object.is ECMAScript Latest Draft].
*مسودة المعيار [https://tc39.github.io/ecma262/#sec-object.is ECMAScript Latest Draft].
*معيار [http://www.ecma-international.org/ecma-262/6.0/#sec-object.is ECMAScript 2015 (6th Edition)]‎.
*معيار [http://www.ecma-international.org/ecma-262/6.0/#sec-object.is ECMAScript 2015 (6th Edition)]‎.
[[تصنيف:JavaScript]]
[[تصنيف:JavaScript|{{SUBPAGENAME}}]]
[[تصنيف:JavaScript Global Objects]]
[[تصنيف:JavaScript Global Objects|{{SUBPAGENAME}}]]
[[تصنيف:JavaScript Object]]
[[تصنيف:JavaScript Object|{{SUBPAGENAME}}]]

المراجعة الحالية بتاريخ 15:43، 28 يناير 2018

الدالة 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 هذه الميزة.

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