كائنات JavaScript القياسية: التخصيص والقيم و hasOwnProperty و getOwnPropertyNames شرح طرق
في JavaScript ، Object
يتم استخدام نوع البيانات لتخزين أزواج القيم الرئيسية ، ومثل Array
نوع البيانات ، يحتوي على العديد من الطرق المفيدة. هذه بعض الطرق المفيدة التي ستستخدمها أثناء العمل مع الكائنات.
طريقة تعيين الكائن
و Object.assign()
يستخدم طريقة ل
- إضافة خصائص وقيم إلى كائن موجود
- عمل نسخة جديدة من كائن موجود ، أو
- الجمع بين العديد من الكائنات الموجودة في كائن واحد.
و Object.assign()
يتطلب أسلوب واحد targetObject
كمعلمة ويمكن قبول عدد غير محدود من sourceObjects
كمعلمات إضافية.
من المهم ملاحظة أن targetObject
المعلمة سيتم تعديلها دائمًا. إذا كانت هذه المعلمة تشير إلى كائن موجود ، فسيتم تعديل هذا الكائن ونسخه.
إذا كنت ترغب في إنشاء نسخة من كائن دون تعديل ذلك الكائن الأصلي ، فيمكنك تمرير كائن فارغ {}
باعتباره targetObject
المعلمة الأولى ( ) والكائن المراد نسخه كمعامل ( sourceObject
) ثاني .
إذا تم تمرير الكائنات كمعلمات إلى Object.assign()
مشاركة نفس الخصائص (أو المفاتيح) ، فإن قيم الخصائص التي تأتي لاحقًا في قائمة المعلمات ستحل محل القيم التي جاءت سابقًا.
بناء الجملة
Object.assign(targetObject, ...sourceObject);
قيمة الإرجاع
Object.assign()
إرجاع ال targetObject
.
أمثلة
التعديل والنسخ targetObject
:
let obj = {name: 'Dave', age: 30}; let objCopy = Object.assign(obj, {coder: true}); console.log(obj); // { name: 'Dave', age: 30, coder: true } console.log(objCopy); // { name: 'Dave', age: 30, coder: true }
النسخ targetObject
بدون تعديل:
let obj = {name: 'Dave', age: 30}; let objCopy = Object.assign({}, obj, {coder: true}); console.log(obj); // { name: 'Dave', age: 30 } console.log(objCopy); // { name: 'Dave', age: 30, coder: true }
كائنات لها نفس الخصائص :
let obj = {name: 'Dave', age: 30, favoriteColor: 'blue'}; let objCopy = Object.assign({}, obj, {coder: true, favoriteColor: 'red'}); console.log(obj); // { name: 'Dave', age: 30, favoriteColor: 'blue' } console.log(objCopy); // { name: 'Dave', age: 30, favoriteColor: 'red', coder: true }
طريقة قيم الكائن
و Object.values()
يأخذ أسلوب كائن كمعلمة وإرجاع مجموعة من قيمها. وهذا يجعل من المفيد للتسلسل مع المشتركة Array
أساليب مثل .map()
، .forEach()
و .reduce()
.
بناء الجملة
Object.values(targetObject);
قيمة الإرجاع
مصفوفة من targetObject
قيم الكائن ( ) التي تم تمريرها .
أمثلة
const obj = { firstName: 'Quincy', lastName: 'Larson' } const values = Object.values(obj); console.log(values); // ["Quincy", "Larson"]
إذا كان الكائن الذي تمرره يحتوي على أرقام كمفاتيح ، Object.value()
فسيعيد القيم وفقًا للترتيب العددي للمفاتيح:
const obj1 = { 0: 'first', 1: 'second', 2: 'third' }; const obj2 = { 100: 'apple', 12: 'banana', 29: 'pear' }; console.log(Object.values(obj1)); // ["first", "second", "third"] console.log(Object.values(obj2)); // ["banana", "pear", "apple"]
إذا تم تمرير شيء آخر غير الكائن إليه Object.values()
، فسيتم إجباره في كائن قبل إعادته كمصفوفة:
const str = 'hello'; console.log(Object.values(str)); // ["h", "e", "l", "l", "o"]
أسلوب hasOwnProperty للكائن
تقوم Object.hasOwnProperty()
الطريقة بإرجاع قيمة منطقية تشير إلى ما إذا كان الكائن يمتلك الخاصية المحددة.
هذه طريقة مناسبة للتحقق مما إذا كان الكائن لديه الخاصية المحددة أم لا لأنه يعيد true / false وفقًا لذلك.
بناء الجملة
Object.hasOwnProperty(prop)
قيمة الإرجاع
true // or false
أمثلة
تستخدم Object.hasOwnProperty()
لاختبار ما إذا كانت الخاصية موجودة أم لا في كائن معين:
const course = { name: 'freeCodeCamp', feature: 'is awesome', } const student = { name: 'enthusiastic student', } course.hasOwnProperty('name'); // returns true course.hasOwnProperty('feature'); // returns true student.hasOwnProperty('name'); // returns true student.hasOwnProperty('feature'); // returns false
أسلوب getOwnPropertyNames للكائن
و Object.getOwnPropertyNames()
يأخذ أسلوب كائن كمعلمة والعوائد ومجموعة من جميع خصائصه.
بناء الجملة
Object.getOwnPropertyNames(obj)
قيمة الإرجاع
مصفوفة من سلاسل خصائص الكائن الذي تم تمريره.
أمثلة
const obj = { firstName: 'Quincy', lastName: 'Larson' } console.log(Object.getOwnPropertyNames(obj)); // ["firstName", "lastName"]
إذا تم تمرير شيء آخر غير الكائن إليه Object.getOwnPropertyNames()
، فسيتم إجباره في كائن قبل إعادته كمصفوفة:
const arr = ['1', '2', '3']; console.log(Object.getOwnPropertyNames(arr)); // ["0", "1", "2", "length"]
وعد.بروتوتايب. ثم
و Promise.prototype.then
ظيفة تقبل حجتين وإرجاع وعد.
الوسيطة الأولى هي دالة مطلوبة تقبل وسيطة واحدة. سيؤدي الوفاء الناجح بالوعد إلى تشغيل هذه الوظيفة.
الوسيطة الثانية هي دالة اختيارية تقبل أيضًا وسيطة واحدة خاصة بها. سيؤدي طرح الخطأ أو رفض الوعد إلى تشغيل هذه الوظيفة.
function onResolved (resolvedValue) { /* * access to resolved values of promise */ } function onRejected(rejectedReason) { /* * access to rejection reasons of promise */ } promiseReturningFunction(paramList) .then( // then function onResolved, [onRejected] );
Promise.prototype.then
يسمح لك بأداء العديد من الأنشطة غير المتزامنة بالتسلسل. يمكنك القيام بذلك عن طريق ربط then
وظيفة بأخرى مفصولة بمعامل نقطي.
promiseReturningFunction(paramList) .then( // first then function function(arg1) { // ... return someValue; } ) ... .then( // nth then function function(arg2) { // ... return otherValue; } )
Map.prototype.entries
إرجاع Iterator
كائن جديد يحتوي على [key, value]
أزواج لكل عنصر في Map
الكائن بترتيب الإدراج.
بناء الجملة
myMap.entries()
مثال
const myMap = new Map(); myMap.set('foo',1); myMap.set('bar',2); myMap.set('baz',3); var iterator = myMap.entries(); console.log(iterator.next().value); // ['foo', 1] console.log(iterator.next().value); // ['bar', 2] console.log(iterator.next().value); // ['baz', 3]
مزيد من المعلومات حول الكائنات في JavaScript:
- كيفية إنشاء كائنات في JavaScript
- كيفية تكرار الأشياء في JavaScript
مزيد من المعلومات حول القيم المنطقية:
- Booleans في JavaScript