Bir nesne özelliğini nasıl değişmez hale getirilir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Bir nesnenin özelliğini değiştirilemez hale getirmenin birkaç yolu vardır:
-
Object.defineProperty()kullanımı:Bu yöntem, nesnenin özelliklerini daha ayrıntılı kontrol ile tanımlamanıza veya değiştirmenize olanak tanır. Değiştirilemez bir özellik oluşturmak için, özelliğin tanımlayıcısını
writable: falseolarak ayarlamalısınız.const obj = {}; Object.defineProperty(obj, 'myProperty', { value: 'Değiştirilemez değer', writable: false, // Özelliği değiştirilemez yapar enumerable: true, // Özellik yine de döngüde görünür configurable: true // Özelliğin silinmesine veya tanımlayıcısının değiştirilmesine izin verir }); // Değeri değiştirmeye çalışma, mod olmayan durumda gözardı edilir // ve sıkı modda TypeError hatası verir obj.myProperty = 'Yeni değer'; console.log(obj.myProperty); // "Değiştirilemez değer" gösterirconfigurable: falseolarak ayarlanırsa, özellik silinemez veya tanımlayıcı değiştirilemez (writabledahil).const obj2 = {}; Object.defineProperty(obj2, 'myProperty', { value: 'Değiştirilemez ve kolayca silinemez', writable: false, enumerable: true, configurable: false // Tanımlayıcıyı değiştirilemez yapar }); // Değeri değiştirmeye çalışma obj2.myProperty = 'Yeni değer'; console.log(obj2.myProperty); // "Değiştirilemez ve kolayca silinemez" gösterir // Özelliği silmeye çalışma delete obj2.myProperty; console.log(obj2.myProperty); // "Değiştirilemez ve kolayca silinemez" gösterir -
Object.freeze()kullanımı:Bu yöntem, nesneyi "dondurur". Bu, yeni özellikler eklenemeyeceği, mevcutlar silinemeyeceği, mevcut özelliklerin değerleri değiştirilemeyeceği (dahil olmak üzere, onların sayılabilirliği ve yapılandırılabilirliği) ve nesnenin prototipinin değiştirilemeyeceği anlamına gelir.
const obj = { myProperty: 'Değiştirilemez değer' }; Object.freeze(obj); // Değeri değiştirmeye çalışma obj.myProperty = 'Yeni değer'; console.log(obj.myProperty); // "Değiştirilemez değer" gösterir // Yeni özellik eklemeye çalışma obj.newProperty = 'Yeni'; console.log(obj.newProperty); // undefined gösterir // Özelliği silmeye çalışma delete obj.myProperty; console.log(obj.myProperty); // "Değiştirilemez değer" gösterirObject.freeze()yüzeysel bir işlemdir. Eğer nesnenin bir özelliği başka bir nesne ise, içteki nesne dondurulmaz. -
constkullanımıyla nesne içeren değişkenler:constanahtar kelimesi, nesne referansını değiştirilemez yapar, nesne kendisi değil. Değişkeni başka bir nesneye yeniden atayamazsınız, ancak nesnenin özelliklerini değiştirebilirsiniz.const obj = { myProperty: 'Başlangıç değeri' }; // Özellik değerini değiştirebilirsiniz obj.myProperty = 'Yeni değer'; console.log(obj.myProperty); // "Yeni değer" gösterir // Değişkeni yeniden atayamazsınız // obj = { başkaÖzellik: 'Başka' }; // TypeError hatası verir
Yöntemlerin karşılaştırması:
| Yöntem | Ne değiştirilemez hale gelir? | Değiştirilemezlik seviyesi |
|---|---|---|
Object.defineProperty() |
Belirli bir özellik | Tanımlayıcı ile belirlenir |
Object.freeze() |
Tüm nesne | Yüzeysel |
const |
Nesneye referans | Değişken |
Yöntem seçimi, ne kadar granular olması gerektiğine bağlıdır. Bir özellik için Object.defineProperty(), tüm nesne için Object.freeze(). Referansın yeniden atanmasını engellemek için const kullanılır.