Please note, this is a STATIC archive of website developer.mozilla.org from November 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

Object.is()

Ця стаття потребує редакційного огляду. Як ви можете допомогти.

Object.is() - метод, що визначає чи два значення є одним і тим же значенням.

Синтаксис

Object.is(value1, value2);

Параметри

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

Значення, що повертається

Boolean вказує чи є два аргументи одним і тим же значенням.

Опис

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

  • обидва undefined
  • обидва null
  • обидва true або обидва false
  • обидва є рядками однакової довжини з однаковими символами
  • обидва є одним і тим же об'єктом
  • обидва є числами та
    • обидва +0
    • обидва -0
    • обидва NaN
    • або обидва ненульові та обидва не NaN та їх значення співпадають

Це не теж саме, що бути рівними відповідно до оператора == . Оператор == застосовує різні приведення до Типу до обох сторін (якщо вони не одного Типу) перед тим як перевірити на рівність (в результаті чого, такий вираз як "" == 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

Дивись також

Мітки документа й учасники

 Зробили внесок у цю сторінку: Sestri4kina
 Востаннє оновлена: Sestri4kina,