Object.isSealed()

Il metodo Object.isSealed() determina se un oggetto √® sigillato.

Syntax

Object.isSealed(obj)

Parametri

obj
L'oggetto da controllare.

Valore di ritorno

Un Boolean che indica se l'oggetto è congelato oppure no.

Descrizione

Ritorna true se l'oggetto √® sigillato, altrimenti false. Un oggetto  √® sigillato se non √® estensibile e se tutte le sue propriet√† sono non-configurabili e non possono essere rimosse (ma non necessariamente non-sovrascrivibili).

Esempi

// Gli oggetti non sono sigillati di default.
var empty = {};
Object.isSealed(empty); // === false

// Se rendi un oggetto vuoto non-estensibile,
// è vacuamente sigillato.
Object.preventExtensions(empty);
Object.isSealed(empty); // === true

// Lo stesso non si verifica con un oggetto non vuoto,
// a meno che le sue proprietà non sono tutte non-configurabili.
var hasProp = { fee: 'fie foe fum' };
Object.preventExtensions(hasProp);
Object.isSealed(hasProp); // === false

// Ma rendere tutte le sue proprietà non-configurabili
// rende l'oggetto effettivamente sigillato.
Object.defineProperty(hasProp, 'fee', {
  configurable: false
});
Object.isSealed(hasProp); // === true

// Il metodo pi√Ļ veloce per sigillare un oggetto, ovviamente,
// è il metodo Object.seal.
var sealed = {};
Object.seal(sealed);
Object.isSealed(sealed); // === true

// Un oggetto sigillato è, per definizione, non-estensibile.
Object.isExtensible(sealed); // === false

// Un oggetto sigillato può anche essere congelato,
// ma non è necessario.
Object.isFrozen(sealed); // === true
// (tutte le proprietà sono anche non-sovrascrivibili)

var s2 = Object.seal({ p: 3 });
Object.isFrozen(s2); // === false
// ('p' è comunque sovrascrivibile)

var s3 = Object.seal({ get p() { return 0; } });
Object.isFrozen(s3); // === true
// (per le proprietà "accessor", è importante solo la configurabilità della proprietà)

Note

In ES5, se l'argomento di questo metodo non √® un'oggetto, allora verr√† generato un TypeError. In ES2015, un argomento che non √® un oggetto verr√† trattato come se fosse un normale oggetto gi√† sigillato, e perci√≤ verr√† semplicemente ritornato true.

Object.isSealed(1);
// TypeError: 1 non è un oggetto (codice in ES5)

Object.isSealed(1);
// true                          (codice in ES2015)

Specifications

Compatibilità con i browser

BCD tables only load in the browser

Vedi anche