اذهب إلى المحتوى

السؤال

نشر

بفرض أن لدي كائن Object يحتوي على بعض الخصائص properties والتوابع methods :

let user = {
  "age": 19,
  "email": "emad@gmail.com",
  "firstName": "Emad",
  "lastName": "Saif",
  getFullName() {
    return this.firstName + " " + this.lastName;
  }
};

console.log(user.age);	// 19

كيف يمكنني حذف أحد هذه الخصائص أو التوابع الموجودة في الكائن بشكل صحيح؟

Recommended Posts

  • 1
نشر

يمكن إزالة أي خاصية أو تابع من كائن Object بعدة طريق:

إستخدام الكلمة المفتاحية delete

// لا يوجد أي فرق بين الطرق التالية
delete user.age;

// أو
delete user['age'];

// أو
var prop = "age";
delete user[prop];

إستخدام القيمة undefined

عند محاولة الوصول إلى خاصية غير موجودة في أي كائن سوف يتم إرجاع undefined ، ويمكننا أن نستخدم هذا الأمر لمحاكاة حذف الخاصية أو التابع من الكائن خاصتنا:

user.age = undefined;
console.log(user);

console.log(user.hasOwnProperty('age'));	// true

/*

{
  age: undefined,
  email: 'emad@gmail.com',
  firstName: 'Emad',
  lastName: 'Saif',
  getFullName: ƒ
}

*/

هذه الطريقة سوف تبقى الخاصية أو التابع موجودًا في الكائن لكن بقيمة undefined، بينما إستعمال الكلمة المفتاحية delete سوف يزل الخاصية أو التابع بشكل كامل:

delete user.age;
console.log(user);
console.log(user.hasOwnProperty('age'));	// false 

/*

{
  email: 'emad@gmail.com',
  firstName: 'Emad',
  lastName: 'Saif',
  getFullName: ƒ
}

*/

عمل كائن Object جديد

يمكن عمل كائن Object جديد يحتوي على كل الخصائص والتوابع ما عدا التلك التي نريد حذفها:

const {age, ...newUser} = user;

console.log(newUser.age);   // undefined
console.log(user.age); // 19

ميزة هذه الطريقة أنها تُبقى على العنصر الأصلي كما هو بدون تغير وتقوم بإنشاء كائن جديد كليًا بالخصائص والتوابع التي نريدها فقط، لكن من عيوبها أنها تقوم بعمل متغيرات جديدة في المجال الحالي، ففي المثال السابق تم إنشاء متغير جديد باسم age بقيمة 19

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...