الفرق بين المراجعتين لصفحة: «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 هذه الميزة.
مصادر ومواصفات
- مسودة المعيار ECMAScript Latest Draft.
- معيار ECMAScript 2015 (6th Edition).