我有一个简单的工厂,我希望简化,每次添加一个我想要返回的新对象时都不需要修改。在Javascript中,我如何能够在运行时创建对象?感谢
switch (leagueId) {
case 'NCAAF' :
return new NCAAFScoreGrid();
case 'MLB' :
return new MLBScoreGrid();
...
}
答案 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将在运行时评估代码并返回对象。