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.
O método Object.is()
determina se dois valores correspondem ao mesmo valor.
Sintaxe
Object.is(value1, value2);
Parâmetros
Return value
Um Boolean
indicando se os dois argumentos possuem o mesmo valor ou não.
Descrição
Object.is()
determina se dois valores correspondem ao mesmo valor. Dois valores correspondem ao mesmo valor se uma das seguintes condições for verdadeira:
-
ambos são
undefined
-
ambos são
null
-
ambos são
true
ou ambos sãofalse
-
ambos são strings do mesmo comprimento, com os mesmos caracteres
-
ambos são o mesmo objeto
-
ambos são numéricos e
Isso não é o mesmo que ser igual de acordo com o operador ==
. O operador ==
aplica diversas coerções para ambos os lados (se eles não correspondem ao mesmo Tipo) antes de testar a igualdade (resultando em comportamentos como a comparação "" == false
retornar true
), enquanto Object.is
não realiza a coerção de nenhum dos valores.
Isso também não é o mesmo que ser igual de acordo com o operador ===
. O operador ===
(assim como o operador ==
) trata os valores numéricos -0
e +0
como iguais e trata Number.NaN
como não igual a NaN
.
Exemplos
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
// Casos especiais
Object.is(0, -0); // false
Object.is(-0, -0); // true
Object.is(NaN, 0 / 0); // true
Polyfill para navegadores que não suportam ES6
Object.is()
é uma adição proposta ao padrão ECMA-262; e como tal, pode não estar presente em todos os navegadores. Você pode contornar essa situação por meio da adição do seguinte código no começo de seus scripts. Isso permitirá a você utilizar Object.is()
, mesmo quando não houver suporte por parte do navegador.
if (!Object.is) {
Object.is = function (x, y) {
// Algoritmo para verificar se os valores sao iguais
if (x === y) {
// Passos 1-5, 7-10
// Passos 6.b-6.e: +0 != -0
return x !== 0 || 1 / x === 1 / y;
} else {
// Passo 6.a: NaN == NaN
return x !== x && y !== y;
}
};
}
Especificações
Specification |
---|
ECMAScript Language Specification # sec-object.is |
Compatibilidade com navegadores
BCD tables only load in the browser
Veja também
- Comparações de igualdade — uma comparação dos três recursos implementados para verificação de igualdade.