Потому, что в данном случае должна использоваться другая нотация:
var user = {
firstName: "Василий",
surname: "Петров",
patronym: "Иванович"
};
function showFullName(firstPart, lastPart) {
alert(this[firstPart] + " " + this[lastPart]);
}
showFullName.call(user, 'firstName', 'surname') // "Василий Петров"
showFullName.call(user, 'firstName', 'patronym') // "Василий Иванович"
http://learn.javascript.ru/object#д...-скобки