Ця стаття потребує редакційного огляду. Як ви можете допомогти.
Object.is() - метод, що визначає чи два значення є одним і тим же значенням.
Синтаксис
Object.is(value1, value2);
Параметри
value1- Перше значення для порівняння.
value2- Друге значення для порівняння.
Значення, що повертається
Boolean вказує чи є два аргументи одним і тим же значенням.
Опис
Object.is() визначає чи два значення є одним і тим же значенням. Два значення співпадають, якщо виконується одна з наступних умов:
- обидва
undefined - обидва
null - обидва
trueабо обидваfalse - обидва є рядками однакової довжини з однаковими символами
- обидва є одним і тим же об'єктом
- обидва є числами та
Це не теж саме, що бути рівними відповідно до оператора == . Оператор == застосовує різні приведення до Типу до обох сторін (якщо вони не одного Типу) перед тим як перевірити на рівність (в результаті чого, такий вираз як "" == false видає значення true), а Object.is не застосовує приведення до Типу до жодного зі значень .
Це також не теж саме, що бути рівними відповідно до оператора === . Оператор === (як і оператор ==) обробляє числові значення -0 та +0 як рівні та опрацьовує Number.NaN як нерівне NaN.
Приклади
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
Поліфілл для браузерів без ES6
Object.is() є запропонованим доповненням до стандарту ECMA-262; і як таке може бути присутнім не в усіх браузерах . Ви можете обійти цю проблему, використовуючи наступний код на початку ваших скриптів. Це дозволить вам використовувати Object.is() у разі відсутності вбудованої підтримки.
if (!Object.is) {
Object.is = function(x, y) {
// Алгоритм SameValue
if (x === y) { // Steps 1-5, 7-10
// Кроки 6.b-6.e: +0 != -0
return x !== 0 || 1 / x === 1 / y;
} else {
// Крок 6.a: NaN == NaN
return x !== x && y !== y;
}
};
}
Специфікації
| Специфікація | Статус | Коментар |
|---|---|---|
| ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'Object.is' in that specification. |
Standard | Первинне визначення. |
| ECMAScript 2017 Draft (ECMA-262) The definition of 'Object.is' in that specification. |
Draft |
Сумісність з браузерами
| Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| Базова підтримка | 30 | 22 (22) | No support | (Yes) | 9 |
| Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| Базова підтримка | No support | ? | 22.0 (22) | No support | No support | 9 |
Дивись також
- Equality comparisons and sameness — порівняння всіх трьох вбудованих об'єктів однаковості