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 Objectsınıf adını.
defineProperty () Parametreleri
defineProperty()Yöntem alır:
- obj - Özelliğin tanımlanacağı nesne.
- prop -
SymbolTanı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.
configurableenumerable
Bir veri tanımlayıcı ayrıca aşağıdakilere sahip olabilir:
valuewritable
Erişimci tanımlayıcılarında ayrıca şunlar olabilir:
getset
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,getvesettuşları, bir veri tanımlayıcı olarak tedavi edilir. Bir tanımlayıcı ikisi de varsavalueveyawritablevegetyasetanahtarlar, 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.
enumerableMülkiyet niteliği özellik tarafından alınır belirler Object.assign()veya yaymak operatörü.
configurableTesis, niteliklerini nesneden olup olmadığı silindi (dışındaki edilip edilemeyeceğini aynı anda nitelik kontrolleri valueve writable) değiştirilebilir.
Önerilen Kaynaklar: Javascript Object defineProperties ()








