مرحبا يا هابر! أقدم لكم ترجمة المقال "7 حيل مع الراحة ونشر كائنات جافا سكريبت" لجويل تومز.مرحبًا بالجميع ، ألقى لي زميل في العمل مؤخرًا رابطًا لمقالة باللغة الإنجليزية تسرد طرقًا مختلفة للعمل مع الراحة ونشر العاملين. كانت مفيدة لي وقررت ترجمتها. لذا ، لنبدأ.
يمكن استخدام عاملي Rest و Spread ليس فقط لدمج الوسائط في مصفوفة ودمج المصفوفات.في هذه المقالة ستجد 7 حيل أقل شهرة لاستخدام عوامل الراحة والامتداد.1. إضافة خصائص
استنساخ كائن أثناء الإضافة إلى الكائن الجديد إلى الكائن المستنسخ.في المثال أدناه ، نقوم باستنساخ كائن المستخدم وإضافة خاصية كلمة المرور إلى كائن userWithPass المستنسخ .const user = { id: 100, name: 'Howard Moon'}
const userWithPass = { ...user, password: 'Password!' }
user
userWithPass
2. دمج الكائنات
تحليل العمليات PART1 و PART2 merzhatsya كائن USER1const part1 = { id: 100, name: 'Howard Moon' }
const part2 = { id: 100, password: 'Password!' }
const user1 = { ...part1, ...part2 }
حتى نفس الكائنات يمكن أن تكون متجاورة باستخدام بناء الجملة هذا.const partial = { id: 100, name: 'Howard Moon' }
const user = { ...partial, id: 100, password: 'Password!' }
user
3. إزالة خاصية من كائن
يمكن إزالة خصائص كائن باستخدام مجموعة من عبارات التدمير والراحة. في المثال أدناه ، نقوم بتدمير الكائن المتبقي وإزالة خاصية كلمة المرور منه .const noPassword = ({ password, ...rest }) => rest
const user = {
id: 100,
name: 'Howard Moon',
password: 'Password!'
}
noPassword(user)
4. الحذف الديناميكي للخصائص
في المثال أدناه ، تأخذ الدالة removeProperty prop كوسيطة. باستخدام اسم الخاصية الذي تم تمريره في الوسيطة ، نستبعد بشكل ديناميكي الخاصية من الكائن المستنسخ.const user1 = {
id: 100,
name: 'Howard Moon',
password: 'Password!'
}
const removeProperty = prop => ({ [prop]: _, ...rest }) => rest
const removePassword = removeProperty('password')
const removeId = removeProperty('id')
removePassword(user1)
removeId(user1)
5. تنظيم أو فرز الممتلكات بالاسم
في بعض الأحيان لا تكون الخصائص الموجودة في الكائن بالترتيب الذي نحتاج إليه. باستخدام عدة حيل ، يمكننا دفع الخصائص إلى أعلى القائمة ، أو إلى الوسط ، على سبيل المثال.const user3 = {
password: 'Password!',
name: 'Naboo',
id: 300
}
const organize = object => ({ id: undefined, ...object })
organize(user3)
من أجل وضع كلمة المرور في النهاية ، تحتاج أولاً إلى تدمير الكائن وإزالة كلمة المرور ، ثم استخدم عامل الانتشار لأضافته.6. الخصائص الافتراضية
الخصائص الافتراضية هي الخصائص التي سيتم تعيينها إذا لم تكن في الكائن المستنسخ.في المثال أدناه ، حقل علامات الاقتباس مفقود في كائن user2 . تقوم الدالة setDefaults ، في حالة عدم وجود علامات الاقتباس ، بتعيينها بشكل افتراضي مع القيمة [] . بعد استدعاء وظيفة setDefaults (user2) ، تقوم بإرجاع خاصية بعلامات اقتباس للقيمة : []
عند استدعاء setDefaults (user4) ، تقوم الدالة بإرجاع قيمة غير معدلة حيث أن الكائن user4 يحتوي بالفعل على خاصية علامات الاقتباسconst user2 = {
id: 200,
name: 'Vince Noir'
}
const user4 = {
id: 400,
name: 'Bollo',
quotes: ["I've got a bad feeling about this..."]
}
const setDefaults = ({ quotes = [], ...object}) =>
({ ...object, quotes })
setDefaults(user2)
setDefaults(user4)
يمكنك أيضًا كتابتها على هذا النحو إذا كنت تريد عرض القيم الافتراضية أولاً:const setDefaults = ({ ...object}) => ({ quotes: [], ...object })
7. إعادة تسمية الخصائص
باستخدام الحيل المذكورة أعلاه ، يمكننا أيضًا إنشاء وظيفة تعيد تسمية خصائص الكائن إلينا.تخيل أن لدينا كائنًا يحمل معرف الخاصية مكتوبًا بأحرف كبيرة ، ونحن بحاجة إلى إعادة تسميته إلى أحرف صغيرة. نبدأ بإزالة خاصية المعرف من الكائن. ثم قم بإضافته مرة أخرى باستخدام معرف الاسم أثناء نسخ الكائن.const renamed = ({ ID, ...object }) => ({ id: ID, ...object })
const user = {
ID: 500,
name: "Bob Fossil"
}
renamed(user)
8. المكافأة. إضافة عقار بناء على شرط
بفضل @ vialialbano لإظهار مثل هذه الطريقة. في هذا المثال ، نضيف حقل كلمة المرور فقط إذا كانت password == true !const user = { id: 100, name: 'Howard Moon' }
const password = 'Password!'
const userWithPassword = {
...user,
id: 100,
...(password && { password })
}
userWithPassword
استنتاج
حاولت سرد بعض الطرق الأقل شهرة لاستخدام وسائل الراحة والعاملين. إذا كنت تعرف أي طرق أخرى غير مدرجة في هذه القائمة ، يرجى الكتابة عنها في التعليقات. إذا كانت هذه المقالة مفيدة لك ، يرجى إعادة نشرها لأصدقائك ومعارفك.