Object.isSealed()
Il metodo Object.isSealed()
determina se un oggetto è sigillato.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Il codice sorgente per questo esempio interattivo si trova in una repository di GitHub. Se vuoi contribuire al progetto degli esempi interattivi, puoi clonare https://github.com/mdn/interactive-examples ed inviarci una pull request.
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 (en-US) 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
Specification | Status | Comment |
---|---|---|
ECMAScript 5.1 (ECMA-262) The definition of 'Object.isSealed' in that specification. |
Standard | Definizione iniziale. Implementato in JavaScript 1.8.5. |
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'Object.isSealed' in that specification. |
Standard | |
ECMAScript (ECMA-262) The definition of 'Object.isSealed' in that specification. |
Living Standard |
Compatibilità con i browser
BCD tables only load in the browser