Esta traducción está incompleta. Por favor, ayuda a traducir este artículo del inglés.
This is a new technology, part of the ECMAScript 2015 (ES6) standard.
This technology's specification has been finalized, but check the compatibility table for usage and implementation status in various browsers.
El método Object.is()
determina si dos valores son iguales.
Síntaxis
Object.is(valor1, valor2);
Parámetros
valor1
- Primer valor a comparar.
valor2
- Segundo valor a comparar.
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
- ambons 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
Especificación | Estado | Comentario |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'Object.is' in that specification. |
Standard | Definición inicial. |
Compatibilidad en navegadores
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | 30 | 22 (22) | Not supported | (Yes) | Not supported |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | Not supported | ? | 22.0 (22) | Not supported | Not supported | Not supported |
Ver también
- Equality comparisons and sameness — a comparison of all three built-in sameness facilities