Обычно делают так:
var a = function (data) {
data = JSON.parse(data);
var commands = {
log: function(data) {
console.log(data);
},
alert: function(data) {
alert(data);
}
};
commands[data.command](data.arg);
};
var b = function(data) {
data = JSON.parse(data);
var str = data.charAt(0).toUpperCase() + data.substring(1);
a(JSON.stringify({command: 'alert', arg: str}));
};
b(JSON.stringify('hello'));
Т.е. функция напрямую не вызывается. Вместо этого мы просто просим вызвать ее (указывая ее имя), и передаем для нее агрумент.
Что-то подобное я в расширении для хрома использовал. Так как там общение идет через строковые сообщения.