2 Практическое руководство по JavaScript. Динамический выбор метода/свойства

В динамическом языке программирования JavaScript истинно следующее выражение:
obj[expressionResultingInMemberName] == obj.memberName

Поэтому вместо конструкции:
if (condition) {
 myObj.method1(someArg);
} else {
 myObj.method2(someArg);
}

рекомендуется использовать конструкцию:
myObj[condition ? 'method1' : 'method2'](someArg);

Еще примеры:
object['propertyName'] // => object.propertyName
object['methodName'](arg1) // => object.methodName(arg1)

// Call show() or hide(), depending on shouldBeVisible
element[shouldBeVisible ? 'show' : 'hide']();

// Avoid "heavy" animations on IE to favor immediate reflow
// (assumes we've got a properly set isIE variable)
element[isIE ? 'simpleEffect' : 'complexEffect']();

element[(enable ? 'add' : 'remove') + 'ClassName']('enabled');

var love = { firstName: 'Élodie', lastName: 'Porteneuve' };
var useFirstName = true;
alert(love[useFirstName ? 'firstName' : 'lastName']); // => "Élodie"