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.
El método Object.is()
determina si dos valores son iguales.
Síntaxis
Object.is(valor1, valor2);
Parámetros
Valor return del método
Este método devuelve un valor de tipo Boolean
indicando si los valores pasados como parámetros son iguales o no.
Descripción
Object.is()
determina si dos valores son iguales. Dos valores son iguales si se puede asegurar que:
-
ambos son
undefined
-
ambos son
null
-
ambos son
true
ofalse
-
ambos son strings y tienen la misma longitud con los mismos carácteres
-
ambos son el mismo objeto
-
ambos son números y
Esta comparación no es igual a la que realiza el operador ==
. El operador ==
aplica varias coerciones(comprobaciones) en ambos sentidos (si no tienen el mismo Type) antes de probar la igualdad (lo que resulta en comportamientos como "" == false
siendo true
), pero Object.is
no obliga a niguno de los valores.
Esta tampoco es igual a la que realiza el operador ===
. El operador ===
(y el operador ==
) trata los valores -0
y +0
como iguales, y además, trata Number.NaN
como no igual a NaN
.
Ejemplos
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
// Special Cases
Object.is(0, -0); // false
Object.is(-0, -0); // true
Object.is(NaN, 0 / 0); // true
Polyfill para navegadores no ES6
Object.is()
es una adición propuesta en el estandar ECMA-262; y como tal, puede no estar presente en todos los navegadores. Para los casos en que no tenga disponible este método, podría utilizar este código haciendolo que se cargue antes que cualquier otro script. Esto permite que puedas utilizar Object.is()
en los navegadores que no lo llevan incluído.
if (!Object.is) {
Object.is = function (x, y) {
// SameValue algorithm
if (x === y) {
// Steps 1-5, 7-10
// Steps 6.b-6.e: +0 != -0
return x !== 0 || 1 / x === 1 / y;
} else {
// Step 6.a: NaN == NaN
return x !== x && y !== y;
}
};
}
Especificaciones
Specification |
---|
ECMAScript Language Specification # sec-object.is |
Compatibilidad con navegadores
BCD tables only load in the browser
Ver también
- Comparadores de igualdad e identidad —Una comparación de las 3 operaciones de cotejamiento integradas.