البرمجة

كيفية تغيير خصائص كائن دون تعديله؟

لتحقيق هذا الهدف، يمكنك استخدام مفهوم النسخ العميق (deep copy) أو النسخ السطحي (shallow copy) حسب الحاجة. في حالتنا هذه، نحتاج إلى القيام بنسخ سطحية للكائن a للحفاظ على a بدون تغيير، ونستخدم النسخة السطحية المعدلة ك b بتغيير القيمة فقط دون تغيير a:

javascript
const a = {x: "Hi", y: "Test"}; const b = { ...a, x: "Bye" }; // الآن b = {x: "Bye", y: "Test"} و a = {x: "Hi", y: "Test"}

هنا، { ...a, x: "Bye" } تقوم بنسخ الخصائص من a وتغيير قيمة x دون التأثير على a الأصلية.

المزيد من المعلومات

بالتأكيد، هنا بعض المعلومات الإضافية حول النسخ في JavaScript:

  1. النسخ العميق (Deep Copy): في بعض الحالات، قد تحتاج إلى نسخ كاملة للكائنات داخل كائن معين. هذا يتطلب النسخ العميق، حيث يتم نسخ الكائنات الفرعية أيضًا، وليس فقط الإشارات إليها. يمكن استخدام مكتبات مثل lodash أو استخدام تقنيات متقدمة مثل الريكورسية لتحقيق النسخ العميق.

  2. النسخ السطحي (Shallow Copy): هو نوع من النسخ يقوم بنسخ القيم المباشرة للخصائص الرئيسية لكائن معين، دون نسخ الكائنات الفرعية. هذا مفيد عندما تريد تغيير قيمة خاصية معينة دون تأثير الكائن الأصلي.

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

    javascript
    const a = {x: "Hi", y: {z: "Test"}}; const b = Object.assign({}, a, {x: "Bye"}); // الآن b = {x: "Bye", y: {z: "Test"}} و a = {x: "Hi", y: {z: "Test"}}
  4. Spread Syntax: هو جزء من ES6 ويستخدم لفرش أو فتح قيم مصفوفة أو كائن إلى مواقع جديدة. يمكن استخدامه أيضًا لإنشاء نسخ سطحية من الكائنات.

زر الذهاب إلى الأعلى