Bug #091
🪲 Znajdź buga
const objSealed = { value: 11 }
const objFreezed = { value: 11 }
Object.seal(objSealed)
Object.freeze(objFreezed)
objSealed.value = 22
objFreezed.value = 22
objSealed.foo = "bar"
objFreezed.foo = "bar"
delete objSealed.value
delete objFreezed.value
console.log(objSealed)
console.log(objFreezed)
Czy w powyższym przykładzie istniejące własności obiektów mogą zostać usunięte, a nowe własności mogą zostać dodane?
Jakie wartości obiektów zostaną zalogowane do konsoli?
🧪 Rozwiązanie
const objSealed = { value: 11 }
const objFreezed = { value: 11 }
Object.seal(objSealed)
Object.freeze(objFreezed)
objSealed.value = 22
objFreezed.value = 22
objSealed.foo = "bar"
objFreezed.foo = "bar"
delete objSealed.value
delete objFreezed.value
console.log(objSealed) // { value: 22 }
console.log(objFreezed) // { value: 11 }
Obiekty można pieczętować (seal) oraz zamrażać (freeze).
Obie metody działają bardzo podobnie, blokując modyfikacje takie jak usuwanie czy dodawanie własności obiektu.
Obiekt zapieczętowany przez Object.seal()
umożliwia jednak modyfikację istniejących własności w przeciwieństwie do obiektu zamrożonego przez Object.freeze()
.
objSealed
zezwala na zaktualizowanie wartości do { value: 22 }
.
objFreezed
nie umożliwia takiej modyfikacji i zatrzymuje początkową wartość { value: 11 }
.
🎢 Plac zabaw
Otwórz edytor w nowym oknie📑 Linki
❤️ Podobają Ci się bugi JS?
Podziel się linkiem ze znajomymi:
https://codisity.pl/100-bugow-js