كائنات JavaScript القياسية: التخصيص والقيم و hasOwnProperty و getOwnPropertyNames شرح طرق

في JavaScript ، Objectيتم استخدام نوع البيانات لتخزين أزواج القيم الرئيسية ، ومثل Arrayنوع البيانات ، يحتوي على العديد من الطرق المفيدة. هذه بعض الطرق المفيدة التي ستستخدمها أثناء العمل مع الكائنات.

طريقة تعيين الكائن

و Object.assign()يستخدم طريقة ل

  1. إضافة خصائص وقيم إلى كائن موجود
  2. عمل نسخة جديدة من كائن موجود ، أو
  3. الجمع بين العديد من الكائنات الموجودة في كائن واحد.

و 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