who_cares_?,
Цитата:
var room = { number: 23, occupy: function() { alert( this.number ); }, free: function() { alert( this.number ); } }; room.toJSON = function() { var replacement = new Object(); for (var val in this) { if(this[val].name == '') { replacement[val] = ""; } else { if (typeof (this[val]) === 'function') replacement[val] = this[val].toString(); else replacement[val] = this[val] } } return replacement; }; alert(JSON.stringify(room)); |
Dilettante_Pro Ну да выглядит неплохо, только опять таки, как вернуть объект в первозданный вид? Придется опять проходить по всему полученному с помощью JSON.parse объекту чем то типа eval, которым по хорошему вообще лучше не пользоваться.. неужели нет какого-то более .. эммм .. готового решения/библиотеки ?((
|
who_cares_?,
Никто такими извращениями не занимается.... |
В общем случае функции сериализовать нельзя.
Во первых, функция может быть создана методом bind(), тогда она будет выглядеть примерно так: "function () { [native code] }" Во вторых, функция при своем создании может замыкать переменные, тогда строка будет правдоподобной, но всё равно бесполезной. Потому задача сомнительная. Надо смотреть как функции появились. Пришли с сервера? они уже строки. Были как-то созданы с замыканием? Надо отдельно сохранять замыкания. Хотя, если функции простые и используют только this и глобалы, то сериализуй и забудь тот бред, который я тут написал =) |
Часовой пояс GMT +3, время: 08:24. |