Мне нужно передать объекты JavaScript через JSON, а также передать его функции. Я нашел рабочую версию получения строк функций и их передачи. Тогда я могу оценить их снова.
//Create the function
var myFunction = function(){alert('Hello, my Function!');}
//get the functions String reprensentation
var myFunctionTransferString = myFunction.toString();
//Now we transfered the object and want to have a function back
var myTransferedFunction = eval('(' + myFunctionTransferString + ')');
//call the transfered function
myTransferedFunction();
Здесь у меня есть jsfiddle для этого: http://jsfiddle.net/bMjug/
Это работает в Firefox, Chrome и Safari, как и должно (но, как вы можете догадаться, не в том большом пакете программного обеспечения Microsoft, называемом Internet Explorer).
В строке, где я хочу оценить функцию, я получаю сообщение fn is null or not an object
в IE8.
На самом деле я нашел решение для этого, но мне действительно не нравится это решение. Если я помещу объявление переменной в строку, я оцениваю и удаляю паразиты, потому что я больше не ожидаю объект, который будет делать то, что я хочу:
eval('var myTransferedFunction = ' + myFunctionTransferString);
Но я нахожу такого рода взломанное и плохое решение.
Кто-нибудь сейчас лучше для этой проблемы?
Заранее спасибо