mozilla
Vos résultats de recherche

    Object.is()

    Cette fonction, proposition pour ECMAScript 6 (Harmony), est expérimentale
    Puisque cette fonction est toujours en développement dans certains navigateurs, veuillez consulter le tableau de compatibilité pour les préfixes à utiliser selon les navigateurs.
    Il convient de noter qu'une fonctionnalité expérimentale peut voir sa syntaxe ou son comportement modifié dans le futur en fonction des évolutions de la spécification.

    La méthode Object.is() permet de déterminer si deux valeurs sont les mêmes.

    Syntaxe

    Object.is(value1, value2);

    Paramètres

    valeur1
    La première valeur à comparer.
    valeur2
    La seconde valeur à comparer.

    Valeur de retour

    Un booléen indiquant si les arguments ont la même valeur.

    Description

    Object.is() permet de déterminer si deux valeurs sont identiques. Deux valeurs sont considérées identiques si :

    • elles sont toutes les deux undefined
    • elles sont toutes les deux null
    • elles sont toutes les deux true ou toutes les deux false
    • elles sont des chaînes de caractères de la même longueur et avec les mêmes caractères
    • elles sont toutes les deux le même objet
    • elles sont des nombres et
      • sont toutes les deux égales à +0
      • sont toutes les deux égales à -0
      • sont toutes les deux égales à NaN
      • sont non-nulles, ne sont pas NaN et ont toutes les deux la même valeur

    Attention, ce n'est pas la même égalité qu'avec l'opérateur ==. L'opérateur == applique différentes conversions à chaque opérande (si ils ne sont pas du même type) avant de tester l'égalité (d'où le comportement "" == false qui donne true), Object.is ne convertit aucune des deux valeurs.

    Cette égalité est également différente de l'égalité stricte qu'on peut avoir avec l'opérateur ===. L'opérateur === (et également l'opérateur ==) considère que -0 et +0 sont égales et que Number.NaN n'est pas égal à NaN.

    Exemples

    Object.is("toto", "toto");     // true
    Object.is(window, window);   // true
    
    Object.is("toto", "truc");     // false
    Object.is([], []);             // false
    
    var test = {a: 1};
    Object.is(test, test);          // true
    
    Object.is(null, null);          // true
    
    // Cas aux limites (cas spéciaux)
    Object.is(0, -0);                // false
    Object.is(-0, -0);               // true
    Object.is(NaN, 0/0);             // true

    Prothèse d'émulation (polyfill)

    Object.is est une nouveauté liée au standard ECMA-262. En tant que tel, il peut ne pas être disponible dans chaque navigateur. On peut émuler le comportement de cette méthode grâce au script suivant (cela permet d'utiliser Object.is même s'il n'y a pas de support natif) :

    if (!Object.is) {
      Object.is = function(v1, v2) {
        if (v1 === 0 && v2 === 0) {
          return 1 / v1 === 1 / v2;
        }
        if (v1 !== v1) {
          return v2 !== v2;
        }
        return v1 === v2;
      };
    }

    Spécifications

    Spécification Statut Commentaires
    ECMAScript 6 (ECMA-262)
    La définition de 'Object.is' dans cette spécification.
    En cours de validation comme recommandation Définition initiale

    Compatibilité des navigateurs

    Fonctionnalité Chrome Firefox (Gecko) Internet Explorer Opera Safari
    Support simple 30.0.1599.114 22 (22) Pas de support (Oui) Pas de support
    Fonctionnalité Android Chrome pour Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
    Support simple Pas de support ? 22.0 (22) Pas de support Pas de support Pas de support

    Voir aussi

    Étiquettes et contributeurs liés au document

    Contributors to this page: SphinxKnight
    Dernière mise à jour par : SphinxKnight,