在运行时创建对象

时间:2009-10-21 17:24:23

标签: javascript

我有一个简单的工厂,我希望简化,每次添加一个我想要返回的新对象时都不需要修改。在Javascript中,我如何能够在运行时创建对象?感谢

switch (leagueId) {
  case 'NCAAF' :
      return new NCAAFScoreGrid();
  case 'MLB' :
      return new MLBScoreGrid();
  ... 
}

3 个答案:

答案 0 :(得分:6)

var leagues = {
    'NCAAF': NCAAFScoreGrid,
    'MLB':   MLBScoreGrid,
    // ...
};  // maybe hoist this dictionary out to somewhere shared

if (leagues[leagueId]) {
    return new leagues[leagueId]();
}
// else leagueId unknown

答案 1 :(得分:1)

您可以使用括号运算符来查找构造函数。

new (window[leagueId + 'ScoreGrid'])(...);

答案 2 :(得分:-2)

您可以使用eval方法,例如,

返回eval(“new”+ leagueId +“ScoreGrid();”);

eval将在运行时评估代码并返回对象。