代码之家  ›  专栏  ›  技术社区  ›  Steve

在运行时创建对象

  •  0
  • Steve  · 技术社区  · 15 年前

    我在下面有一个简单的工厂,每当我添加一个要返回的新对象时,我都希望简化它,而不需要修改它。在JavaScript中,如何在运行时创建对象?谢谢

    switch (leagueId) {
      case 'NCAAF' :
          return new NCAAFScoreGrid();
      case 'MLB' :
          return new MLBScoreGrid();
      ... 
    }
    
    3 回复  |  直到 15 年前
        1
  •  6
  •   ephemient    15 年前
    var leagues = {
        'NCAAF': NCAAFScoreGrid,
        'MLB':   MLBScoreGrid,
        // ...
    };  // maybe hoist this dictionary out to somewhere shared
    
    if (leagues[leagueId]) {
        return new leagues[leagueId]();
    }
    // else leagueId unknown
    
        2
  •  1
  •   Mike Samuel    15 年前

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

    new (window[leagueId + 'ScoreGrid'])(...);
    
        3
  •  -2
  •   jatanp    15 年前

    例如,可以使用eval方法,

    返回eval(“new”+leagueid+“scoregrid();”);

    eval将在运行时计算代码并返回对象。