А смысл твоего метода 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
?