Вызов callback из JSON 
		
		
		
		Всем привет!)  
	Хочется поинтересоваться, возможно ли передать аргумент callback в виде json строки, а потом парсить полученную на вход строку и вызвать callback? То есть, есть функции, которые могут общаться между собой исключительно строками, а не объектами. Нужны идеи, как можно вызвать callback, если передать можно только строку? Заранее спасибо!)  | 
	
		
 вот те строка и парсь ее 
	
str = '{"a": 1, "b": 2}';
console.log(JSON.parse(str));
 | 
	
		
 skrudjmakdak, Мне необходимо не просто парсить строку, мне необходимо из этой запарсенной строки вызвать callback. 
	
test2 = function (callback) {
    callback = JSON.parse(callback);
    callback('hello');
}
test2(JSON.stringify(function (res) {
     console.log(res);
}));
В идеале должно выдать "hello" в консоль =(  | 
	
		
 
var func = 'function(text){alert(text)}';
new Function('return ' + func + '.apply(null, arguments)')('Hello');
Вот так?  | 
	
		
 Ruslan_xDD, 
	Спасибо большое, да! Не подскажете, можно ли функцию преобразовать в строку?  | 
	
		
 рассмотрим ваш пример: 
	
test2(JSON.stringify(function (res) {
     console.log(res);
}));
в метод stringify надо передавать объект, а вы передаете функцию, это никуда не годится (в данном случае пустой объект): 
JSON.stringify({})
вот. передавайте 2 параметра. один строка, другой функция: 
function test (str, fn) {
	fn(JSON.parse(str));
}
test('{"a": 1, "b": 2}', function (obj) { console.log(obj); });
 | 
	
		
 skrudjmakdak, 
	Спасибо за подсказку! Но дело в том, что мне каким то образом необходимо передать именно функцию в виде строки, из-за невозможности передать в функцию не строку. Ruslan_xDD уже показал, как это можно сделать. Теперь вопрос в том, как можно преобразовать передаваемую функцию в строку  | 
	
		
 
console.log((function () {}).toString())
 | 
	
		
 Обычно делают так: 
	
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'));
Т.е. функция напрямую не вызывается. Вместо этого мы просто просим вызвать ее (указывая ее имя), и передаем для нее агрумент. Что-то подобное я в расширении для хрома использовал. Так как там общение идет через строковые сообщения.  | 
	
		
 Разобрался, спасибо! 
	Функцию можно преобразовать в строку с помощью function.toString();  | 
| Часовой пояс GMT +3, время: 17:14. |