Emad Saif نشر 14 يونيو 2022 أرسل تقرير نشر 14 يونيو 2022 لدي صنف يحتوي على أكثر من تابع وخاصية: class Foo { someFunc() { // ... } someFunc2() { // ... } someFunc3() { // ... } } كيف يمكنني الوصول إلى كل هذه التوابع في شكل حلقة For، بحيث يمكنني إستدعاء هذه التوابع أو طباعة أسمها؟ 2 اقتباس
1 محمد أبو عواد نشر 14 يونيو 2022 أرسل تقرير نشر 14 يونيو 2022 يمكنك ذلك من خلال استخدام التابع Object.getOwnPropertyNames ثم نستطيع عمل ترشيح أو فلتر للناتج من خلال استخدام التابع filter لفلترة الدالة البانية الكونستركتر كالتالي const instances = Object.getOwnPropertyNames(Foo.prototype) .filter(prop => prop != "constructor"); console.log(instanceOnly); 1 اقتباس
1 Wael Aljamal نشر 14 يونيو 2022 أرسل تقرير نشر 14 يونيو 2022 الكائن يمكن أن يكون له methods خاصة، و أن يرث دوال من الصنف الأب له نخزن أسماء الدوال في مصفوفة و نعمل الفلترة باستخدام typeof // تعريف الدالة التي تقبل كائن لفحصها و إعادة أسماء دوالها function getAllFuncs(myObj) { // تهيئة مصفوفة لحفظ أسماء الدوال const props = []; // حفظ الكائن مؤقتاً في متغير محلي let obj = myObj; // الدوران على خصائص الدالة do { props.push(...Object.getOwnPropertyNames(obj)); // جلب الدوال للكائن الحالي } while (obj = Object.getPrototypeOf(obj)); // Prototype في حال وراثة يوجد دوال من الأب لذلك نجلبهم كم // المرور على المصفوفة و فلترة النتائج return props.sort().filter((e, i, arr) => { // غير مكرر و نوعه دالة if (e!=arr[i+1] && typeof myObj[e] == 'function') return true; }); } 1 اقتباس
السؤال
Emad Saif
لدي صنف يحتوي على أكثر من تابع وخاصية:
كيف يمكنني الوصول إلى كل هذه التوابع في شكل حلقة For، بحيث يمكنني إستدعاء هذه التوابع أو طباعة أسمها؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.