Emad Saif نشر 12 يونيو 2022 أرسل تقرير نشر 12 يونيو 2022 لدي صنف class يحتوي على بعض التوابع methods، ولدي أيضًا دالة تُعيد اسم أحد هذه التوابع كـنص String، على النحو التالي: class Person { getAll() { // ... } } function methodName() { // ... return "getAll"; } const firstUser = new Person(); كيف يمكنني إستخدام ناتج الدالة methodName لإستدعاء تابع موجود في الصنف Person في JavaScript؟ 2 اقتباس
1 سامح أشرف نشر 12 يونيو 2022 أرسل تقرير نشر 12 يونيو 2022 يوجد أكثر من طريقة للقيام بهذا الأمر، وأسهل طريقة هي إستخدام طريقة الأقواس للوصول إلى التابع، كما يلي: firstUser["getAll"]; // access the method firstUser["getAll"](); // call the method وبالتالي يمكننا إستخدام ما يرجعه التابع methodName مكان النص في المثال السابق: firstUser[methodName()]; // access the method firstUser[methodName()](); // call the method أيضًا توجد طريقة أخرى عبر إستخدام الدالة eval: eval("firstUser." + methodName() + "()"); لكن لا يُفضل إستخدام هذه الطريقة لأنها قد تؤدي إلى وجود ثغرة XSS والتي تسمح للمهاجم بتنفيذ أكواد JavaScript ضارة بالمستخدم بغرض سرقة البيانات أو التخريب بشكل عام. 2 اقتباس
1 Adnane Kadri نشر 12 يونيو 2022 أرسل تقرير نشر 12 يونيو 2022 يمكنك تعريف هاته الدالة ضمن كائن الوثيقة window ثم اعادة استدعاءها، يكون ذلك بشكل ديناميكي كـ: class Person { getAll() { console.log('called') } } function methodName() { // ... return "getAll"; } const firstUser = new Person(); window['target'] = new Function('firstUser.'+methodName()+'()') target(); // called نستعمل في هذا الكائن Function لإنشاء دالة جديدة. 1 اقتباس
السؤال
Emad Saif
لدي صنف class يحتوي على بعض التوابع methods، ولدي أيضًا دالة تُعيد اسم أحد هذه التوابع كـنص String، على النحو التالي:
كيف يمكنني إستخدام ناتج الدالة methodName لإستدعاء تابع موجود في الصنف Person في JavaScript؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.