77- دروس جافا سكربت الكائن – JS Object Properties

### مقدمة

تعتبر الكائنات (Objects) في JavaScript واحدة من البنى الأساسية التي تُستخدم لتخزين البيانات وتنظيمها في شكل أزواج من المفاتيح والقيم. يمكن أن تكون القيم عبارة عن خصائص (Properties) أو وظائف (Methods). في هذا المقال، سنلقي نظرة مفصلة على خصائص الكائنات في JavaScript، وكيفية استخدامها بطرق متعددة وفعّالة.

### تعريف خصائص الكائنات

خصائص الكائنات هي عبارة عن أزواج من المفاتيح والقيم. المفتاح هو اسم الخاصية بينما القيمة يمكن أن تكون أي نوع من البيانات في JavaScript، بما في ذلك الكائنات الأخرى أو الدوال.

### إنشاء الخصائص

يمكن إنشاء الخصائص في الكائنات باستخدام طريقتين رئيسيتين: النقطة (Dot Notation) أو الأقواس المربعة (Bracket Notation).

#### باستخدام النقطة

const person = {};
person.name = "John";
person.age = 30;

#### باستخدام الأقواس المربعة

const person = {};
person["name"] = "John";
person["age"] = 30;

### الوصول إلى الخصائص

[شركة برمجة مصرية] مثلما يمكننا إنشاء خصائص، يمكننا أيضًا الوصول إليها باستخدام نفس الطريقتين.

#### باستخدام النقطة

console.log(person.name); // John
console.log(person.age);  // 30

#### باستخدام الأقواس المربعة

console.log(person["name"]); // John
console.log(person["age"]);  // 30

### تحديث الخصائص

تحديث قيمة خاصية موجودة يتم بنفس الطريقة التي نستخدمها لإنشائها.

person.name = "Doe";
console.log(person.name); // Doe

### حذف الخصائص

يمكن حذف خاصية من الكائن باستخدام الكلمة المفتاحية `delete`.

delete person.age;
console.log(person.age); // undefined

### الخصائص الديناميكية

من ميزات JavaScript القدرة على إنشاء خصائص ديناميكيًا، حيث يمكن استخدام قيم متغيرة كمفاتيح للخصائص.

const key = "email";
person[key] = "john.doe@example.com";
console.log(person.email); // john.doe@example.com

### استخدام الخصائص في التكرار

يمكن استخدام حلقة `for…in` للتكرار عبر جميع الخصائص القابلة للتعداد (enumerable) في الكائن.

for (let key in person) {
  console.log(`${key}: ${person[key]}`);
}

### خصائص الكائنات المتقدمة

#### الخصائص الوصفية (Property Descriptors)

كل خاصية في JavaScript لها مواصفات يمكن الوصول إليها باستخدام `Object.getOwnPropertyDescriptor`، مثل `configurable`، `enumerable`، و`writable`.

const descriptor = Object.getOwnPropertyDescriptor(person, 'name');
console.log(descriptor);

#### تجميد الكائنات

يمكن استخدام `Object.freeze` لمنع التعديلات على الكائن وخصائصه.

Object.freeze(person);
person.name = "Jane"; // لن يتم التغيير
console.log(person.name); // Doe

### الخاتمة

خصائص الكائنات في JavaScript توفر مرونة كبيرة في التعامل مع البيانات وتنظيمها. من خلال فهم كيفية [شركة برمجة مصرية] إنشاء الخصائص وتحديثها وحذفها، يمكن للمبرمجين بناء تطبيقات أكثر تعقيدًا وفعالية. سواء كنت تستخدم الخصائص البسيطة أو الخصائص المتقدمة مثل الخصائص الوصفية، فإن الكائنات تبقى أداة قوية في جعبتك البرمجية.