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

كيف يمكن استخدام فئات ES6 لتوسيع الوظائف والوصول إلى بيانات المثيلات؟

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

How can ES6 Classes be Used to Extend Functions and Access Instance Data?

توسيع الوظيفة بفئات ES6

في ES6، يمكن توسيع الكائنات الخاصة، مما يسمح بالوراثة من كائن الوظيفة. على الرغم من أنه من الممكن استدعاء هذه الكائنات كوظائف، إلا أن تنفيذ المنطق لهذا الاستدعاء قد يكون أمرًا صعبًا.

تمرير بيانات المثيل إلى استدعاء الوظيفة

عند استدعاء فئة كدالة ، يشير هذا إلى كائن النافذة. للوصول إلى بيانات المثيل، يتوفر طريقتان:

  1. فرض الاستدعاء الفائق لتوقع سلسلة تعليمات برمجية تحتوي على بيانات المثيل.
يمتد الفصل Smth الوظيفة { منشئ (خ) { super("return "JSON.stringify(x) ";"); }
class Smth extends Function {
  constructor(x) {
    super("return "   JSON.stringify(x)   ";");
  }
}
  1. استخدام الإغلاق: إرجاع وظيفة إغلاق تصل إلى متغيرات الحالة.
فئة Smth تمتد الوظيفة { منشئ (خ) { وظيفة شيء () {إرجاع x؛ }; Object.setPrototypeOf(smth, Smth.prototype); عودة شيء ما؛ }
class Smth extends Function {
  constructor(x) {
    super("return "   JSON.stringify(x)   ";");
  }
}

تجريد ملحق الوظيفة

هناك طريقة أكثر عمومية تتمثل في إنشاء فئة ExtensibleFunction التي تتعامل مع الامتداد:

class ExtensibleFunction توسع الوظيفة { منشئ (و) { return Object.setPrototypeOf(f, new.target.prototype); }
class Smth extends Function {
  constructor(x) {
    super("return "   JSON.stringify(x)   ";");
  }
}
يمكن بعد ذلك استخدام هذه الفئة لتوسيع فئات معينة:

class Smth Extends ExtensibleFunction { منشئ (خ) { super(() => { return x; }); // إنهاء }
class Smth extends ExtensibleFunction {
  constructor(x) {
    super(() => { return x; }); // closure
  }
}
باختصار، يسمح توسيع الوظيفة بفئات ES6 بوراثة سلوك الوظيفة أثناء تخصيص منطق الاتصال. يمكن استخدام طرق مختلفة لتوفير الوصول إلى بيانات المثيل عند استدعاء الوظيفة الموسعة.

بيان الافراج أعيد طبع هذه المقالة على: 1729462035 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3