سؤال

النظر في هذا الرمز:

var Someclass = new Class();
var Anotherclass = new Class();
var classes = ['Someclass', 'Anotherclass'];

وأريد إنشاء فئة موتوول مع اسم ديناميكي. بالطبع يمكنني أن أفعل ذلك عن طريق eval:

eval('var obj = new ' + classes[0] + '(params);');

لكنني لا أعتقد أنه حل جيد. كيف تفعل هذا بطريقة "مناسبة"؟ ربما شيء مثل:

var obj = ObjectFactory(classes[0], params);
هل كانت مفيدة؟

المحلول

استخدم ال تدوين قوسين للإشارة إلى الفصل كسلسلة.

var object = new window['SomeClass']();

تمرير المعلمات بمنتظم.

var object = new window['SomeClass'](1, 2, "three");

بدلاً من إنشاء جميع الفئات على مستوى العالم ، استخدم كائنًا لتسمية المساحة.

var My = {
    SomeClass: new Class(..),
    OtherClass: new Class(..)
};

var object = new My['SomeClass']();
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top