"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > فهم أساليب الكائن الرئيسية في جافا سكريبت

فهم أساليب الكائن الرئيسية في جافا سكريبت

تم النشر بتاريخ 2024-11-04
تصفح:257

Understanding Key Object Methods in JavaScript

يأتي كائن JavaScript مزودًا بعدد من الأساليب المفيدة التي تساعد المطورين على التعامل مع الكائنات بسهولة. دعونا نتعرف على بعض أهمها، مع شرح موجز وأمثلة

  1. Object.create()
  2. Object.assis()
  3. Object.keys()
  4. Object.values()
  5. Object.entries()
  6. Object.freeze()
  7. Object.seal()
  8. Object.preventExtensions()
  9. Object.getPrototypeOf()
  10. Object.setPrototypeOf()
  11. Object.defineProperty()
  12. Object.defineProperties()
  13. Object.getOwnPropertyDescriptor()
  14. Object.getOwnPropertyDescriptors()
  15. Object.getOwnPropertyNames()
  16. Object.is()
  17. Object.isFrozen()
  18. Object.isSealed()
  19. Object.isExtensible()
  20. Object.fromEntries()
  21. Object.hasOwnProperty()
  22. Object.hasOwn()
  23. Object.groupBy() (الميزة المقترحة، قد لا تكون متاحة بالكامل)

Object.create()
Object.create() هي طريقة في JavaScript تُستخدم لإنشاء كائن جديد بكائن نموذج أولي محدد وخصائص اختيارية. فهو يسمح بمزيد من التحكم الدقيق في النموذج الأولي للكائن وخصائصه مقارنة باستخدام القيم الحرفية للكائن أو المنشئات.

const personPrototype = {
  greet() {
    console.log(`Hello, my name is ${this.name}`);
  }
};

const john = Object.create(personPrototype);
john.name = "John";
john.greet();  // Output: Hello, my name is John

Object.assis()
Object.assis() هي طريقة JavaScript مضمنة تُستخدم لنسخ قيم جميع الخصائص الخاصة القابلة للإحصاء من كائن مصدر واحد أو أكثر إلى كائن هدف. يقوم بإجراء نسخة سطحية ويعيد الكائن المستهدف المعدل.

const target = { a: 1 };
const source = { b: 2, c: 3 };
const result = Object.assign(target, source);
console.log(result);  // Output: { a: 1, b: 2, c: 3 }
console.log(target);  // Output: { a: 1, b: 2, c: 3 } (target is also modified)

Object.keys()
إرجاع مصفوفة من أسماء الخصائص القابلة للتعداد الخاصة بالكائن (المفاتيح)

const obj = { a: 1, b: 2, c: 3 };
console.log(Object.keys(obj));  // Output: ['a', 'b', 'c']

Object.values()
إرجاع مصفوفة من قيم الخصائص القابلة للتعداد الخاصة بالكائن

const obj = { a: 1, b: 2, c: 3 };
console.log(Object.values(obj));  // Output: [1, 2, 3]

Object.entries()
إرجاع مصفوفة من أزواج الخاصية القابلة للتعداد الخاصة بالكائن [مفتاح، قيمة]

const obj = { a: 1, b: 2, c: 3 };
console.log(Object.entries(obj));  // Output: [['a', 1], ['b', 2], ['c', 3]]

Object.freeze()
تجميد الكائن، ومنع إضافة خصائص جديدة أو تغيير أو حذف الخصائص الموجودة

const obj = { a: 1 };
Object.freeze(obj);
obj.a = 2;  // No effect, because the object is frozen
console.log(obj.a);  // Output: 1

Object.seal()
يغلق الكائن، ويمنع إضافة خصائص جديدة، ولكنه يسمح بتعديل الخصائص الموجودة.

const obj = { a: 1 };
Object.seal(obj);
obj.a = 2;  // Allowed
delete obj.a;  // Not allowed
console.log(obj.a);  // Output: 2

Object.preventExtensions()
يمنع إضافة أي خصائص جديدة إلى الكائن، لكنه يسمح بتعديل وحذف الخصائص الموجودة

const obj = { a: 1 };
Object.preventExtensions(obj);
obj.b = 2;  // Not allowed
console.log(obj.b);  // Output: undefined

Object.getPrototypeOf()
إرجاع النموذج الأولي (أي [[النموذج الأولي]] الداخلي) للكائن المحدد

const obj = {};
const proto = Object.getPrototypeOf(obj);
console.log(proto);  // Output: {} (the default Object prototype)

Object.setPrototypeOf()
يعين النموذج الأولي لكائن محدد.

const proto = { greet() { console.log('Hello!'); } };
const obj = {};
Object.setPrototypeOf(obj, proto);
obj.greet();  // Output: 'Hello!'

Object.defineProperty()
تعريف خاصية جديدة على كائن أو تعديل خاصية موجودة، مع خيارات إضافية لواصفات الخاصية (على سبيل المثال، قابلة للكتابة، وقابلة للتكوين).

const obj = {};
Object.defineProperty(obj, 'a', {
  value: 42,
  writable: false,  // Cannot modify the value
});
obj.a = 100;  // No effect because writable is false
console.log(obj.a);  // Output: 42

Object.defineProperties()
تعريف خصائص متعددة على كائن مع واصفات الخاصية.

const obj = {};
Object.defineProperties(obj, {
  a: { value: 42, writable: false },
  b: { value: 100, writable: true }
});
console.log(obj.a);  // Output: 42
console.log(obj.b);  // Output: 100

Object.getOwnPropertyDescriptor()
إرجاع واصف خاصية كائن.

const obj = { a: 1 };
const descriptor = Object.getOwnPropertyDescriptor(obj, 'a');
console.log(descriptor);  
// Output: { value: 1, writable: true, enumerable: true, configurable: true }

Object.getOwnPropertyDescriptors()
إرجاع كائن يحتوي على كافة واصفات الخصائص الخاصة بالكائن

const obj = { a: 1 };
const descriptors = Object.getOwnPropertyDescriptors(obj);
console.log(descriptors);
// Output: { a: { value: 1, writable: true, enumerable: true, configurable: true } }

Object.getOwnPropertyNames()
إرجاع مصفوفة من كافة الخصائص (بما في ذلك الخصائص غير القابلة للإحصاء) التي تم العثور عليها مباشرة على كائن.

const obj = { a: 1 };
Object.defineProperty(obj, 'b', { value: 2, enumerable: false });
console.log(Object.getOwnPropertyNames(obj));  // Output: ['a', 'b']

Object.is()
يقارن إذا كانت القيمتان متماثلتين (مثل === ولكنهما يعالجان حالات خاصة مثل NaN)

console.log(Object.is(NaN, NaN));  // Output: true
console.log(Object.is( 0, -0));    // Output: false

Object.isFrozen()
التحقق من تجميد الكائن

const obj = Object.freeze({ a: 1 });
console.log(Object.isFrozen(obj));  // Output: true

Object.isSealed()
يتحقق مما إذا كان الكائن مغلقًا.

const obj = Object.seal({ a: 1 });
console.log(Object.isSealed(obj));  // Output: true

Object.isExtensible()
التحقق من إمكانية إضافة خصائص جديدة إلى الكائن.

const obj = { a: 1 };
Object.preventExtensions(obj);
console.log(Object.isExtensible(obj));  // Output: false

Object.fromEntries()
تحويل مجموعة من أزواج القيمة الرئيسية إلى كائن

const entries = [['a', 1], ['b', 2]];
const obj = Object.fromEntries(entries);
console.log(obj);  // Output: { a: 1, b: 2 }

Object.hasOwnProperty()
التحقق مما إذا كان الكائن يمتلك الخاصية المحددة على أنها خاصة به (غير موروثة)

const obj = { a: 1 };
console.log(obj.hasOwnProperty('a'));  // Output: true

Object.hasOwn()
Object.hasOwn() هي طريقة أحدث تم تقديمها في ES2022 كبديل لـ Object.hasOwnProperty(). يتحقق مما إذا كان الكائن لديه خاصية مباشرة (خاصة) باستخدام مفتاح محدد، دون البحث عن سلسلة النموذج الأولي.

const obj = {
  name: 'Alice',
  age: 25
};

console.log(Object.hasOwn(obj, 'name'));  // true
console.log(Object.hasOwn(obj, 'gender'));  // false

Object.groupBy
Object.groupBy هي ميزة جديدة نسبيًا مقترحة لـ JavaScript في ECMAScript 2024 والتي تتيح لك تجميع الكائنات بناءً على معيار مشترك. وهي ليست متاحة على نطاق واسع حتى الآن في جميع البيئات، لذلك قد لا تعمل في العديد من المتصفحات أو محركات JavaScript حتى يتم تنفيذها بالكامل.

const array = [
  { name: 'Alice', age: 25 },
  { name: 'Bob', age: 30 },
  { name: 'Charlie', age: 25 },
  { name: 'David', age: 30 },
];

// Group objects by age
const groupedByAge = Object.groupBy(array, item => item.age);

console.log(groupedByAge);

/*
Expected Output:
{
  25: [
    { name: 'Alice', age: 25 },
    { name: 'Charlie', age: 25 }
  ],
  30: [
    { name: 'Bob', age: 30 },
    { name: 'David', age: 30 }
  ]
}
*/

بيان الافراج تم نشر هذه المقالة على: https://dev.to/muthuraja_r/javascript-object-methods-33n1?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3