Object.is()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Сводка
Метод Object.is()
определяет, являются ли два значения одинаковыми значениями.
Синтаксис
var isSame = Object.is(value1, value2);
Параметры
Описание
Метод Object.is()
определяет, являются ли два значения одинаковыми значениями. Два значения являются одинаковыми в следующих случаях:
оба равны
undefined
оба равны
null
оба равны
true
, либо оба равныfalse
оба являются строками с одинаковой длиной и одинаковыми символами
оба являются одним и тем же объектом
оба являются числами и
Поведение этого метода не аналогично оператору ==
. Оператор ==
использует приведение типов обоих операндов (если они имеют различный тип) перед проверкой на равенство (в результате получается, что проверка "" == false
даёт true
), а метод Object.is
приведение типов не выполняет.
Поведение этого метода не аналогично оператору ===
. Оператор ===
(также как и оператор ==
) считает числовые значения -0
и +0
равными, а значение Number.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
Полифил
Метод Object.is
предложен в дополнение к стандарту ECMA-262; поэтому он может быть недоступен в некоторых браузерах. Это можно обойти, вставив приведённый ниже фрагмент кода в начало ваших скриптов. Он позволит вам использовать метод 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; } }; }
Спецификации
Specification |
---|
ECMAScript® 2026 Language Specification # sec-object.is |
Совместимость с браузерами
Смотрите также
- Руководство по JavaScript: одинаковость — сравнение всех трёх встроенных способов проверки на одинаковость