Javascript Object.defineProperty ()

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.

  • 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, getve settuşları, bir veri tanımlayıcı olarak tedavi edilir. Bir tanımlayıcı ikisi de varsa valueveya writableve getya setanahtarlar, 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 ()

Ilginç makaleler...