JavaScript Object.defineProperty () yöntemi, bir nesnede var olan özelliği ekler veya değiştirir ve nesneyi döndürür.
defineProperty()
Yöntemin sözdizimi şöyledir:
Object.defineProperty(obj, prop, descriptor)
defineProperty()
Yöntem, statik bir yöntemle olmak kullanılarak denir Object
sınıf adını.
defineProperty () Parametreleri
defineProperty()
Yöntem alır:
- obj - Özelliğin tanımlanacağı nesne.
- prop -
Symbol
Tanımlanacak veya değiştirilecek mülkün veya mülkün adı . - tanımlayıcı - Tanımlanan veya değiştirilen özelliğin tanımlayıcısı.
Nesnelerde bulunan özellik tanımlayıcıları iki türdendir: veri tanımlayıcıları ve erişimci tanımlayıcıları. Aşağıdaki isteğe bağlı özelliklere sahip olabilirler.
configurable
enumerable
Bir veri tanımlayıcı ayrıca aşağıdakilere sahip olabilir:
value
writable
Erişimci tanımlayıcılarında ayrıca şunlar olabilir:
get
set
DefineProperty () öğesinden dönüş değeri
- İşleve iletilen nesneyi döndürür.
Not:
- Varsayılan olarak, kullanılarak eklenen değerler
Object.defineProperty()
değişmezdir ve numaralandırılamaz. - Bir açıklayıcı hiçbiri varsa
value
,writable
,get
veset
tuşları, bir veri tanımlayıcı olarak tedavi edilir. Bir tanımlayıcı ikisi de varsavalue
veyawritable
veget
yaset
anahtarlar, bir istisnası atılır.
Örnek: Nesneye bir data özelliği ekleme
let obj = (); // with a data property descriptor Object.defineProperty(obj, "property1", ( value: 788, writable: true, enumerable: true, configurable: true, )); console.log(obj.property1); // 788 // with an accessor property descriptor Object.defineProperty(obj, "property2", ( get() ( console.log("Getting Value… "); return val; ), set(newVal) ( console.log("Setting Value… "); val = newVal; ), enumerable: true, configurable: true, )); obj.property2 = 6969; // Setting Value… console.log(obj.property2); // 6969
Çıktı
788 Değer Ayarlama… Değer Alma… 6969
Hem verileri hem de erişimci özellik tanımlayıcılarını bir hata oluşturacağı için karıştıramayız.
Bir özelliği değiştirmek için, nesnenin writable
özelliği olmalıdır true
, aksi takdirde katı modda değiştirilmez ve hata vermez.
enumerable
Mülkiyet niteliği özellik tarafından alınır belirler Object.assign()
veya yaymak operatörü.
configurable
Tesis, niteliklerini nesneden olup olmadığı silindi (dışındaki edilip edilemeyeceğini aynı anda nitelik kontrolleri value
ve writable
) değiştirilebilir.
Önerilen Kaynaklar: Javascript Object defineProperties ()