我在下面有一個簡單的工廠,我想簡化並且不需要每次添加我想要返回的新對象時進行修改。在Javascript中,我將如何能夠在運行時創建一個對象?由於在運行時創建對象
switch (leagueId) {
case 'NCAAF' :
return new NCAAFScoreGrid();
case 'MLB' :
return new MLBScoreGrid();
...
}
我在下面有一個簡單的工廠,我想簡化並且不需要每次添加我想要返回的新對象時進行修改。在Javascript中,我將如何能夠在運行時創建一個對象?由於在運行時創建對象
switch (leagueId) {
case 'NCAAF' :
return new NCAAFScoreGrid();
case 'MLB' :
return new MLBScoreGrid();
...
}
var leagues = {
'NCAAF': NCAAFScoreGrid,
'MLB': MLBScoreGrid,
// ...
}; // maybe hoist this dictionary out to somewhere shared
if (leagues[leagueId]) {
return new leagues[leagueId]();
}
// else leagueId unknown
謝謝。我喜歡這個想法。 – Steve 2009-10-21 17:45:11
您可以使用括號運算符來查找構造函數。
new (window[leagueId + 'ScoreGrid'])(...);
我希望這工作,因爲這似乎是最乾淨的解決方案,但不幸的是我在嵌入式電視環境中使用JavaScript,並沒有根窗口對象。 – Steve 2009-10-21 18:13:52
爲什麼你明確地說「在運行時」?唯一的時間對象是在運行時創建的。 – Jesper 2009-10-21 21:10:08