--- id: 5a24c314108439a4d403615b title: Copy an Object with Object.assign challengeType: 6 isRequired: false videoUrl: '' localeTitle: نسخ كائن مع Object.assign --- ## Description
عملت التحديات الأخيرة عدة مع المصفوفات ، ولكن هناك طرق للمساعدة في فرض ثبات الدولة عندما تكون الدولة object ، أيضا. أداة مفيدة لمعالجة الكائنات هي الأداة المساعدة Object.assign() . Object.assign() كائن هدف وكائنات المصدر وخرائط الخصائص من كائنات المصدر إلى الكائن الهدف. تتم الكتابة فوق أي خصائص متطابقة بواسطة الخصائص في كائنات المصدر. يتم استخدام هذا السلوك بشكل شائع لعمل نسخ ضحلة من الكائنات بتمرير كائن فارغ كوسيطة أولى متبوعة بالكائن (الكائنات) التي تريد نسخها. إليك مثالاً: const newObject = Object.assign({}, obj1, obj2); يؤدي هذا إلى newObject object جديد ، والذي يحتوي على الخصائص الموجودة حاليًا في obj1 و obj2 .
## Instructions
تم تعديل حالة Redux والإجراءات للتعامل مع object state . قم بتحرير التعليمة البرمجية لإرجاع كائن state جديد للإجراءات باستخدام الكتابة ONLINE ، والتي تقوم بتعيين خاصية status إلى السلسلة online . حاول استخدام Object.assign() لإكمال التحدي.
## Tests
```yml tests: - text: يجب أن يوجد مخزن Redux وتهيئة بحالة مساوية للكائن defaultState المعلنة على السطر 1. testString: 'assert((function() { const expectedState = { user: "CamperBot", status: "offline", friends: "732,982", community: "freeCodeCamp" }; const initialState = store.getState(); return DeepEqual(expectedState, initialState); })(), "The Redux store should exist and initialize with a state that is equivalent to the defaultState object declared on line 1.");' - text: يجب أن يكون كل من wakeUp و immutableReducer دالات. testString: 'assert(typeof wakeUp === "function" && typeof immutableReducer === "function", "wakeUp and immutableReducer both should be functions.");' - text: يجب أن يؤدي إرسال إجراء من النوع ONLINE تحديث status الخاصية في حالة إلى online ويجب ألا يؤدي إلى تحوُّل الحالة. testString: 'assert((function() { const initialState = store.getState(); const isFrozen = DeepFreeze(initialState); store.dispatch({type: "ONLINE"}); const finalState = store.getState(); const expectedState = { user: "CamperBot", status: "online", friends: "732,982", community: "freeCodeCamp" }; return isFrozen && DeepEqual(finalState, expectedState); })(), "Dispatching an action of type ONLINE should update the property status in state to online and should NOT mutate state.");' - text: يجب استخدام Object.assign لإرجاع حالة جديدة. testString: 'getUserInput => assert(getUserInput("index").includes("Object.assign"), "Object.assign should be used to return new state.");' ```
## Challenge Seed
```jsx const defaultState = { user: 'CamperBot', status: 'offline', friends: '732,982', community: 'freeCodeCamp' }; const immutableReducer = (state = defaultState, action) => { switch(action.type) { case 'ONLINE': // don't mutate state here or the tests will fail return default: return state; } }; const wakeUp = () => { return { type: 'ONLINE' } }; const store = Redux.createStore(immutableReducer); ```
## Solution
```js // solution required ```