Using Dispatch Tables to Avoid Conditionals in JavaScript May 21st, 2013
function processUserInput(command) {
switch (command) {
case "north":
movePlayer("north");
break;
case "east":
movePlayer("east");
break;
case "south":
movePlayer("south");
break;
case "west":
movePlayer("west");
break;
case "look":
describeLocation();
break;
case "backpack":
showBackpack();
break;
}
}
Can be turned into…
var commandTable = {
north: function() { movePlayer("north"); },
east: function() { movePlayer("east"); },
south: function() { movePlayer("south"); },
west: function() { movePlayer("west"); },
look: describeLocation,
backpack: showBackpack
}
function processUserInput(command) {
commandTable[command]();
}
Where the commandTable object’s properties are accessible via bracketed notation, so commanTable[command] is like saying commandTable.north for example.