--- title: Object.is() slug: Web/JavaScript/Reference/Global_Objects/Object/is tags: - Comparação - Condição - ECMAScript6 - Igualdade - JavaScript - Objeto - condicional - metodo translation_of: Web/JavaScript/Reference/Global_Objects/Object/is ---
O método Object.is() determina se dois valores correspondem ao mesmo valor.
Object.is(value1, value2);
value1value2Um {{jsxref("Boolean")}} indicando se os dois argumentos possuem o mesmo valor ou nã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:
true ou ambos são false+0-0Isso não é o mesmo que ser igual de acordo com o operador {{jsxref("Operators/Comparison_Operators", "==", "#Equality")}}. O operador {{jsxref("Operators/Comparison_Operators", "==", "#Equality")}} 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 {{jsxref("Operators/Comparison_Operators", "===", "#Identity")}}. O operador {{jsxref("Operators/Comparison_Operators", "===", "#Identity")}} (assim como o operador {{jsxref("Operators/Comparison_Operators", "==", "#Equality")}}) trata os valores numéricos -0 e +0 como iguais e trata {{jsxref("Number.NaN")}} como não igual a {{jsxref("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
// Casos especiais
Object.is(0, -0); // false
Object.is(-0, -0); // true
Object.is(NaN, 0/0); // true
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ção | Status | Comentário |
|---|---|---|
| {{SpecName('ES6', '#sec-object.is', 'Object.is')}} | {{Spec2('ES6')}} | Definição inicial. |
| {{SpecName('ESDraft', '#sec-object.is', 'Object.is')}} | {{Spec2('ESDraft')}} |
| Recurso | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| Suporte básico | {{CompatChrome("30")}} | {{CompatGeckoDesktop("22")}} |
{{CompatNo}} |
{{CompatVersionUnknown}} | {{CompatSafari("9")}} |
| Recurso | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| Suporte básico | {{CompatNo}} | {{CompatUnknown}} | {{CompatGeckoMobile("22")}} | {{CompatNo}} | {{CompatNo}} | {{CompatSafari("9")}} |