4.3 KiB
4.3 KiB
id | title | challengeType | isRequired | videoUrl | localeTitle |
---|---|---|---|---|---|
5a24c314108439a4d403615b | Copy an Object with Object.assign | 6 | false | نسخ كائن مع Object.assign |
Description
object
، أيضا. أداة مفيدة لمعالجة الكائنات هي الأداة المساعدة Object.assign()
. Object.assign()
كائن هدف وكائنات المصدر وخرائط الخصائص من كائنات المصدر إلى الكائن الهدف. تتم الكتابة فوق أي خصائص متطابقة بواسطة الخصائص في كائنات المصدر. يتم استخدام هذا السلوك بشكل شائع لعمل نسخ ضحلة من الكائنات بتمرير كائن فارغ كوسيطة أولى متبوعة بالكائن (الكائنات) التي تريد نسخها. إليك مثالاً: const newObject = Object.assign({}, obj1, obj2);
يؤدي هذا إلى newObject
object
جديد ، والذي يحتوي على الخصائص الموجودة حاليًا في obj1
و obj2
. Instructions
object
state
. قم بتحرير التعليمة البرمجية لإرجاع كائن state
جديد للإجراءات باستخدام الكتابة ONLINE
، والتي تقوم بتعيين خاصية status
إلى السلسلة online
. حاول استخدام Object.assign()
لإكمال التحدي. Tests
tests:
- text: يجب أن يوجد مخزن Redux وتهيئة بحالة مساوية للكائن <code>defaultState</code> المعلنة على السطر 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 <code>defaultState</code> object declared on line 1.");'
- text: يجب أن يكون كل من <code>wakeUp</code> و <code>immutableReducer</code> دالات.
testString: 'assert(typeof wakeUp === "function" && typeof immutableReducer === "function", "<code>wakeUp</code> and <code>immutableReducer</code> both should be functions.");'
- text: يجب أن يؤدي إرسال إجراء من النوع <code>ONLINE</code> تحديث <code>status</code> الخاصية في حالة إلى <code>online</code> ويجب ألا يؤدي إلى تحوُّل الحالة.
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 <code>ONLINE</code> should update the property <code>status</code> in state to <code>online</code> and should NOT mutate state.");'
- text: يجب استخدام <code>Object.assign</code> لإرجاع حالة جديدة.
testString: 'getUserInput => assert(getUserInput("index").includes("Object.assign"), "<code>Object.assign</code> should be used to return new state.");'
Challenge Seed
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
// solution required