我有这段代码:
var params = Spry.Utils.getLocationParamsAsObject();
theLeague = params.league;
switch (theLeague)
{
case 'boyswinter':
var Soccer = new Spry.Widget.TabbedPanels("Soccer", {defaultTab: 0});
break;
case 'girlswinter':
var Soccer = new Spry.Widget.TabbedPanels("Soccer", {defaultTab: 1});
break;
default:
var Soccer = new Spry.Widget.TabbedPanels("Soccer", {defaultTab: 0});
}
我想使用替代方法切换,我发现这段代码用作指南:
var whatToBring = {
"Sunny" : "Sunscreen and hat",
"Rain" : "Umbrella and boots",
"Cold" : "Scarf and Gloves",
"Default" : "Play it by ear"
}
var gear = whatToBring[weather] || whatToBring["Default"];
然而,我无法弄清楚如何交换我的东西,以便它的工作。它应该很容易,但作为一个JS初学者,我无法绕过它。任何帮助将不胜感激。感谢。
答案 0 :(得分:2)
我不知道在这里使用对象是否是最好的方法,但无论如何,这应该可行。
var leagueMap = {
"boyswinter" : function(){ return new Spry.Widget.TabbedPanels("Soccer", {defaultTab: 0}); },
"girlswinter" : function(){ return new Spry.Widget.TabbedPanels("Soccer", {defaultTab: 1}); },
"Default" : function(){ return new Spry.Widget.TabbedPanels("Soccer", {defaultTab: 0}); }
}
var Soccer = (leagueMap[theLeague] || leagueMap["Default"])();
答案 1 :(得分:0)
从您的示例翻译它将是这样的:
var SoccerFactory = {
'boyswinter' : new Spry.Widget.TabbedPanels("Soccer", {defaultTab: 0}),
'girlswinter' : new Spry.Widget.TabbedPanels("Soccer", {defaultTab: 1}),
'default' : new Spry.Widget.TabbedPanels("Soccer", {defaultTab: 0})
};
var Soccer = SoccerFactory[theLeague] || SoccerFactory['default'];
如果您想进一步了解所使用的概念,请告诉我。我不确定你理解哪些部分。
修改强>
甚至更好!
var SoccerFactory = {
'boyswinter' : new Spry.Widget.TabbedPanels("Soccer", {defaultTab: 0}),
'girlswinter' : new Spry.Widget.TabbedPanels("Soccer", {defaultTab: 1}),
'default' : this['boyswinter']
};
var Soccer = SoccerFactory[theLeague] || SoccerFactory['default'];
重复自己很糟糕。 =)
答案 2 :(得分:0)
应该是这样的:
var theLeague = {
"boyswinter" : function() { return new Spry.Widget.TabbedPanels("Soccer", {defaultTab: 0}); },
"girlswinter" : function() { return new Spry.Widget.TabbedPanels("Soccer", {defaultTab: 1}); },
"Default" : function() { return new Spry.Widget.TabbedPanels("Soccer", {defaultTab: 0}); },
}
var l = theLeague[league] || theLeague["Default"];