Object.is()

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 o false
  • ambons son strings y tienen la misma longitud con los mismos carácteres
  • ambos son el mismo objeto
  • ambos son números y
    • ambos +0 (mayores que 0)
    • ambos -0 (menores que 0)
    • ambos son NaN
    • o ambos no son cero o no son de tipo NaN y tienen el mismo valor

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

Etiquetas y colaboradores del documento

 Colaboradores en esta página: adelamata
 Última actualización por: adelamata,