А смысл твоего метода call, если того же результата можно добиться написав по-человечески:
function show(x) {
console.log(x);
return x;
}
show("foo");
show("foo bar baz".split(" "));
show({
one: 1,
two: 2
});
(function (o) {
for (var i in o) {
show(o[i])
}
})({
one: 1,
two: 2
});
// foo
// [ 'foo', 'bar', 'baz' ]
// { one: 1, two: 2 }
// 1
// 2
?