Ce face Object.seal / preventExtensions
Trei niveluri de protecție, de la cel mai slab: preventExtensions interzice doar adăugarea de proprietăți noi; seal interzice în plus ștergerea și redefinirea lor, dar valorile se pot schimba; freeze interzice orice modificare.
Object.isExtensible spune dacă se mai pot adăuga proprietăți, iar Object.isSealed dacă obiectul este sigilat.
Parametri
| Parametru | Descriere |
|---|---|
obiect |
Obiectul protejat sau verificat. |
Ce returnează
seal și preventExtensions: același obiect. Funcțiile is…: true sau false.
Exemple
Exemplul 1: Ce permite fiecare nivel
const sigilat = Object.seal({ nume: "Ana" });
sigilat.nume = "Maria";
console.log(sigilat.nume);
console.log(Reflect.set(sigilat, "varsta", 30), Reflect.deleteProperty(sigilat, "nume"));
const neextensibil = Object.preventExtensions({ a: 1 });
console.log(Reflect.set(neextensibil, "b", 2), Object.isSealed(neextensibil));
console.log(Reflect.deleteProperty(neextensibil, "a"), neextensibil);
console.log(Object.isExtensible(neextensibil), Object.isSealed(sigilat));
Rezultat
Maria
false false
false false
true {}
false true
Greșeli frecvente
- Crezi că
sealblochează și valorile. Valorile proprietăților existente se pot schimba; pentru blocare completă foloseșteObject.freeze.
Comenzi înrudite
Object.freeze / isFrozen: Îngheață un obiect: nu i se mai pot adăuga, șterge sau modifica proprietățile.Reflect: Funcții pentru operațiile de bază pe obiecte (citire, scriere, ștergere, chei), cu aceleași nume ca în Proxy.Object.defineProperty / defineProperties: Definește o proprietate cu control total: dacă poate fi modificată, afișată în bucle sau ștearsă, plus get/set.