Apply your JS skills to key Mozilla projects as an MDN Fellow! http://mzl.la/MDNFellowship

mozilla
Vos résultats de recherche

    Object.isSealed()

    Résumé

    La méthode Object.isSealed() permet de déterminer si un objet est scellé.

    Syntaxe

    Object.isSealed(obj)

    Paramètres

    obj
    L'objet dont on souhaite savoir s'il est scellé.

    Description

    Renvoie true si l'objet est scellé, false sinon. Un objet scellé est un objet qui n'est pas extensible et dont toutes les propriétés sont non-configurables (on ne peut donc pas les retirer, en revanche on peut avoir un droit de modification).

    Exemples

    // Par défaut, les objets ne sont pas scellés
    var vide = {};
    assert(Object.isSealed(vide) === false);
    
    // Si un objet vide est rendu non-extensible, il est scellé
    Object.preventExtensions(vide);
    assert(Object.isSealed(vide) === true);
    
    // Ce qui n'est pas vrai pour un objet non-vide, sauf si toutes ses propriétés
    // sont non-configurables
    var avecPropriétés = { pif: "paf pouf" };
    Object.preventExtensions(avecPropriétés);
    assert(Object.isSealed(avecPropriétés) === false);
    
    // Si on rend les propriétés non configurables, l'objet est scellé
    Object.defineProperty(avecPropriétés, "pif", { configurable: false });
    assert(Object.isSealed(avecPropriétés) === true);
    
    // La méthode la plus simple est d'utiliser Object.seal.
    var scellé = {};
    Object.seal(scellé);
    assert(Object.isSealed(scellé) === true);
    
    // Un objet scellé est, par définition, non-extensible
    assert(Object.isExtensible(scellé) === false);
    
    // Un objet scellé peut être gelé mais ce n'est pas nécessaire.
    // gelé signifie que les propriétés ne peuvent pas être modifiées
    assert(Object.isFrozen(scellé) === true);
    
    var s2 = Object.seal({ p: 3 });
    assert(Object.isFrozen(s2) === false); // "p" est toujours modifiable
    
    var s3 = Object.seal({ get p() { return 0; } });
    // pour les accesseurs, seule l'accès en configuration est important
    assert(Object.isFrozen(s3) === true); 

    Notes

    Pour ES5, si l'argument passé à la méthode n'est pas un objet mais une valeur d'un autre type primitif, cela entraînera une exception TypeError. Pour ES6, une valeur qui n'est pas un objet sera traitée comme si c'était un objet scellé et la méthode renverra true.

    > Object.isSealed(1)
    TypeError: 1 is not an object // ES5 code
    
    > Object.isSealed(1)
    true                          // ES6 code
    

    Spécifications

    Spécification Statut Commentaires
    ECMAScript 5.1 (ECMA-262)
    La définition de 'Object.isSealed' dans cette spécification.
    Standard Définition initiale. Implémentée avec JavaScript 1.8.5.
    ECMAScript 6 (ECMA-262)
    La définition de 'Object.isSealed' dans cette spécification.
    Draft  

    Compatibilité des navigateurs

    Fonctionnalité Chrome Firefox (Gecko) Internet Explorer Opera Safari
    Support simple 6 4.0 (2.0) 9 12 5.1
    Fonctionnalité Android Chrome pour Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
    Support simple ? ? ? ? ? ?

    Tableau basé sur le tableau de compatibilité de Kangax.

    Voir aussi

    Étiquettes et contributeurs liés au document

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