mozilla
Your Search Results

    Object.is()

    Это экспериментальная технология, часть предложения Harmony (ECMAScript 6).
    Поскольку спецификация этой технологии ещё не стабилизировалась, проверьте таблицу совместимости её использования в различных браузерах. Также обратите внимание, что синтаксис и поведение экспериментальной технологии могут быть изменены в будущих версиях браузеров в соответствии с изменениями в спецификации.

    Сводка

    Метод Object.is() определяет, являются ли два значения одинаковыми значениями.

    Синтаксис

    var isSame = Object.is(value1, value2);

    Параметры

    value1
    Первое сравниваемое значение.
    value2
    Второе сравниваемое значение.

    Описание

    Метод Object.is() определяет, являются ли два значения одинаковыми значениями. Два значения являются одинаковыми в следующих случаях:

    • оба равны undefined
    • оба равны null
    • оба равны true, либо оба равны false
    • оба являются строками с одинаковой длиной и одинаковыми символами
    • оба являются одним и тем же объектом
    • оба являются числами и
      • оба равны +0
      • оба равны -0
      • оба равны NaN
      • либо оба не равны нулю или NaN и оба имеют одинаковое значение

    Поведение этого метода не аналогично оператору ==. Оператор == использует приведение типов обоих операндов (если они имеют различный тип) перед проверкой на равенство (в результате получается, что проверка "" == 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(v1, v2) {
        if (v1 === 0 && v2 === 0) {
          return 1 / v1 === 1 / v2;
        }
        if (v1 !== v1) {
          return v2 !== v2;
        }
        return v1 === v2;
      };
    }
    

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

    Спецификация Статус Комментарии
    ECMAScript 6 (ECMA-262)
    Определение 'Object.is' в этой спецификации.
    Кандидат в рекомендации Изначальное определение.

    Совместимость с браузерами

    Возможность Chrome Firefox (Gecko) Internet Explorer Opera Safari
    Базовая поддержка 30.0.1599.114 22 (22) Нет Нет Нет
    Возможность Android Chrome для Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
    Базовая поддержка Нет ? 22.0 (22) Нет Нет Нет

    Смотрите также

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

    Contributors to this page: franza, teoli, Mingun, Romanzes
    Обновлялась последний раз: Mingun,