--- title: Object.isSealed() slug: Web/JavaScript/Reference/Global_Objects/Object/isSealed tags: - ECMAScript 5 - Function - Italian - Italiano - JavaScript - JavaScript 1.8.5 - Method - Object - Oggetto - funzione - metodo translation_of: Web/JavaScript/Reference/Global_Objects/Object/isSealed ---
Il metodo Object.isSealed()
determina se un oggetto è sigillato.
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.
Object.isSealed(obj)
obj
Un {{jsxref("Boolean")}} che indica se l'oggetto è congelato oppure no.
Ritorna true
se l'oggetto è sigillato, altrimenti false
. Un oggetto è sigillato se non è {{jsxref("Object.isExtensible", "estensibile", "", 1)}} e se tutte le sue proprietà sono non-configurabili e non possono essere rimosse (ma non necessariamente non-sovrascrivibili).
// 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à)
In ES5, se l'argomento di questo metodo non è un'oggetto, allora verrà generato un {{jsxref("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)
Specification | Status | Comment |
---|---|---|
{{SpecName('ES5.1', '#sec-15.2.3.11', 'Object.isSealed')}} | {{Spec2('ES5.1')}} | Definizione iniziale. Implementato in JavaScript 1.8.5. |
{{SpecName('ES6', '#sec-object.issealed', 'Object.isSealed')}} | {{Spec2('ES6')}} | |
{{SpecName('ESDraft', '#sec-object.issealed', 'Object.isSealed')}} | {{Spec2('ESDraft')}} |
{{Compat("javascript.builtins.Object.isSealed")}}