## حماية الكائنات في JavaScript
تعتبر حماية الكائنات في JavaScript جزءًا مهمًا من تطوير التطبيقات الحديثة، حيث توفر القدرة على التحكم في كيفية الوصول إلى خصائص الكائنات وتعديلها. يمكن تحقيق ذلك باستخدام عدة تقنيات مثل التجميد، والختم، والتحديد.
### 1. تجميد الكائنات (Object.freeze)
تجميد الكائن هو وسيلة لمنع التعديلات على الكائن. عندما تقوم بتجميد كائن، لا يمكنك إضافة خصائص جديدة، أو حذف الخصائص الموجودة، أو تعديل القيم الموجودة. يتم استخدام `Object.freeze()` لتحقيق ذلك.
#### [شركة برمجة مصرية] مثال:
const car = {
brand: "Toyota",
model: "Corolla"
};
Object.freeze(car);
car.brand = "Honda"; // لن يتم تغيير القيمة
car.year = 2020; // لن يتم إضافة خاصية جديدة
console.log(car); // { brand: "Toyota", model: "Corolla" }
في هذا المثال، رغم محاولة تغيير قيمة `brand` أو إضافة خاصية `year` جديدة، إلا أن الكائن يبقى دون تغيير.
### 2. ختم الكائنات (Object.seal)
ختم الكائن يسمح لك بتعديل الخصائص الحالية، ولكنه يمنع إضافة أو حذف الخصائص الجديدة. يمكن تحقيق ذلك باستخدام `Object.seal()`.
#### مثال:
const user = {
name: "Alice",
age: 30
};
Object.seal(user);
user.age = 31; // يمكن تعديل القيم الحالية
delete user.name; // لن يتم حذف الخاصية
user.email = "alice@example.com"; // لن يتم إضافة خاصية جديدة
console.log(user); // { name: "Alice", age: 31 }
في هذا المثال، يمكنك تعديل قيمة `age`، ولكن لا يمكنك حذف `name` أو إضافة `email`.
### 3. تعريف الخصائص غير القابلة للتغيير (Object.defineProperty)
تسمح لك `Object.defineProperty()` بتحديد خصائص فردية لكائن وجعلها غير قابلة للكتابة أو غير قابلة للحذف.
#### مثال:
const book = {};
Object.defineProperty(book, "title", {
value: "JavaScript: The Good Parts",
writable: false, // غير قابل للكتابة
configurable: false // غير قابل للحذف
});
book.title = "Another Title"; // لن يتم تغيير القيمة
delete book.title; // لن يتم حذف الخاصية
console.log(book); // { title: "JavaScript: The Good Parts" }
### 4. استخدام Proxy للتحكم في العمليات على الكائنات
`Proxy` هي أداة قوية تسمح لك بتعريف السلوك المخصص لعمليات معينة على الكائنات مثل الوصول إلى الخصائص أو تعديلها.
#### مثال:
const handler = {
get: function(target, property) {
if (property in target) {
return target[property];
} else {
return "Property not found";
}
}
};
const person = new Proxy({}, handler);
person.name = "Bob";
console.log(person.name); // Bob
console.log(person.age); // Property not found
### الخلاصة
تعد حماية الكائنات في JavaScript جزءًا مهمًا من بناء تطبيقات موثوقة وآمنة. توفر الأدوات [شركة برمجة مصرية] مثل `Object.freeze`، `Object.seal`، و`Proxy` طرقًا مرنة للتحكم في كيفية التعامل مع الكائنات، مما يساعد على تجنب التغييرات غير المتوقعة وحماية البيانات الحساسة. من خلال استخدام هذه الأدوات بشكل فعال، يمكنك تحسين تصميم تطبيقاتك وضمان استقرارها.
