طريقة الكائن getOwnPropertyDescriptors ()

اكتشف كل شيء عن طريقة JavaScript getOwnPropertyDescriptors () لكائن الكائن

تقوم هذه الطريقة بإرجاع جميع واصفات الخصائص (غير الموروثة) الخاصة بكائن ما.

Object.getOwnPropertyDescriptors(obj)يقبل كائنًا ، ويعيد كائنًا جديدًا يوفر قائمة بالواصفات.

مثال:

const dog = {}
Object.defineProperties(dog, {
  breed: {
    value: 'Siberian Husky'
  }
})
Object.getOwnPropertyDescriptors(dog)
/*
{
  breed: {
    value: 'Siberian Husky',
    writable: false,
    enumerable: false,
    configurable: false
  }
}
*/

هناك حالة استخدام واحدة تجعل هذه الخاصية مفيدة للغاية. أعطانا ES2015Object.assign()، والتي تنسخ جميع الخصائص الخاصة التي يمكن تعدادها من كائن واحد أو أكثر ، وتعيد كائنًا جديدًا. ومع ذلك ، هناك مشكلة في ذلك ، لأنه لا ينسخ الخصائص ذات السمات غير الافتراضية بشكل صحيح.

إذا كان الكائن على سبيل المثال يحتوي على أداة ضبط فقط ، فلن يتم نسخه بشكل صحيح إلى كائن جديد ، باستخدامObject.assign(). على سبيل المثال مع هذا الكائن:

const person1 = {
  set name(newName) {
    console.log(newName)
  }
}

لن تنجح محاولة النسخ هذه:

const person2 = {}
Object.assign(person2, person1)

لكن هذا سيعمل وينسخ عبر أداة الإعداد بشكل صحيح:

const person3 = {}
Object.defineProperties(person3,
  Object.getOwnPropertyDescriptors(person1))

كما ترى في اختبار وحدة التحكم:

person1.name = 'x'
"x"

person2.name = ‘x’

person3.name = ‘x’ “x”

person2يفتقد الواضع ، لم يتم نسخه.

ينطبق نفس القيد على الكائنات الضحلة مع الاستنساخObject.create().


المزيد من دروس js: