Sales1 min read124 words

كيف يتم استخدام Object.freeze() في JavaScript؟

Erkan Sivas

Erkan Sivas

PlusClouds Author

Cloud & SaaS

كيف يتم استخدام Object.freeze() في JavaScript؟

في جافاسكريبت، تكون الكائنات والمصفوفات قابلة للتغيير. هذا يعني أننا يمكننا تغيير كائن (أو مصفوفة) في أي وقت نشاء. ولكن إذا كنا لا نريد أن يحدث ذلك لأي سبب من الأسباب ونرغب في جعل الكائن غير قابل للتغيير.


يمكننا القيام بذلك باستخدام freeze() الطريقة.


الكائن الذي تم تجميده باستخدام الطريقة freeze() يصبح غير قابل للتغيير؛ تجميد كائن باستخدام freeze يمنع إضافة خصائص جديدة له، أو إزالة الخصائص الحالية، أو تغيير قابلية عد الخصائص الحالية أو قابليتها للتكوين أو قابليتها للكتابة، أو تغيير قيم الخصائص الحالية. كما أن تجميد كائن يمنع تغيير بروتوكوله.


يمكنني إضافة مثال كود عن استخدام هذه الطريقة؛
const obj = {
    name: "Jack"
};

Object.freeze(obj);

obj.name = "Kelly";
// يلقي خطأ في وضع صارم

console.log(obj.name);
// الناتج المتوقع: "Jack"



Frequently Asked Questions

ما هو Object.freeze ولماذا نستخدمه في جافاسكريبت؟

Object.freeze(obj) يجعل الكائن غير قابل للتغيير. يمنع إضافة خصائص جديدة، وإزالة الخصائص الحالية، وتغيير قابلية عد الخصائص أو قابليتها للتكوين أو قابليتها للكتابة، كما يمنع تغيير قيم الخصائص الحالية وفتح البروتوكول الخاص بالكائن.

ماذا يحدث إذا حاولت تعيين قيمة خاصية في كائن مجمد؟

بعد تطبيق التجميد لن تتغير القيمة عند محاولة تعيينها. في الوضع الصارم سيؤدي ذلك إلى رمي خطأ، وبالنموذج المذكور تبقى القيمة الأصلية وهي Jack.

هل يمكنني إضافة خصائص جديدة إلى كائن مجمد؟

لا يمكن ذلك. Object.freeze يمنع إضافة خصائص جديدة للكائن، ولا يسمح بإزالة الخصائص الحالية.

هل يمنع Object.freeze تغيير البروتوكول الخاص بالكائن؟

نعم، يمنع تطبيق التجميد أيضاً تغيير بروتوكول الكائن. وهذا يعني أن البروتوكول أو ال prototype لا يمكن تغييره.

هل يمكنني قراءة قيم الخصائص من كائن مجمد؟

نعم، يمكن قراءة قيم الخصائص حتى بعد التجميد. القراءة تبقى ممكنة وتعرض القيمة كما هي، مثل أن name تظل Jack.

كيف أستخدم مثالاً بسيطاً لتجميد كائن باستخدام Object.freeze؟

Jack

ما القيود الأساسية التي يغلقها التجميد فيما يخص الخصائص؟

يمنع إضافة خصائص جديدة، وإزالة الخصائص الحالية، وتغيير قابلية عد الخصائص أو قابلية التكوين أو قابلية الكتابة، أو تغيير قيم الخصائص الحالية. كما يمنع أيضاً تغيير بروتوكول الكائن.