--- title: Object.is() slug: Web/JavaScript/Reference/Global_Objects/Object/is tags: - ECMAScript 2015 - JavaScript - Method - Object - Рівність - Тотожність - метод translation_of: Web/JavaScript/Reference/Global_Objects/Object/is ---
{{JSRef}}
Метод Object.is() з'ясовує, чи мають два аргументи однакове значення.

Синтаксис

Object.is(value1, value2);

Параметри

value1
Перше значення для порівняння.
value2
Друге значення для порівняння.

Вертає

{{jsxref("Boolean", "Булеве значення")}}, що вказує, чи мають вказані аргументи однакове значення.

Опис

Object.is() визначає, чи мають вказані аргументи однакове значення. Два значення вважаються однаковими за однієї з наступних умов:

Це не те саме, що й рівність відповідно до оператора {{jsxref("Operators/Оператори_порівняння", "==", "#Equality")}}. Оператор == здійснює приведення типів обох операндів (якщо вони належать до різних типів даних) перед перевіркою на рівність (в результаті такий вираз як "" == false має значення true), натомість, метод Object.is не перетворює жодне значення.

Це також не те саме, що й рівність відповідно до оператора {{jsxref("Operators/Оператори_порівняння", "===", "#Identity")}}. Оператор === (так само, як оператор ==) вважає рівними числові значення -0 та +0, а значення {{jsxref("Number.NaN")}} не вважає рівним до {{jsxref("NaN")}}.

Приклади

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

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

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

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

// Особливі Випадки
Object.is(0, -0);            // false
Object.is(-0, -0);           // true
Object.is(NaN, 0/0);         // true

Запасний варіант (поліфіл)

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;
    }
  };
}

Специфікації

Специфікація Статус Коментар
{{SpecName('ES6', '#sec-object.is', 'Object.is')}} {{Spec2('ES6')}} Первинне визначення.
{{SpecName('ESDraft', '#sec-object.is', 'Object.is')}} {{Spec2('ESDraft')}}

Підтримка веб-переглядачами

{{Compat("javascript.builtins.Object.is")}}

Див. також