Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 13.01.2017, 15:07
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

who_cares_?,
Сообщение от who_cares_?
как перевести содержимое функции в текст?
Как вариант для JS-объекта... Правда, toJson тоже туда лезет.
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));
Ответить с цитированием
  #12 (permalink)  
Старый 13.01.2017, 15:50
Интересующийся
Отправить личное сообщение для who_cares_? Посмотреть профиль Найти все сообщения от who_cares_?
 
Регистрация: 13.01.2017
Сообщений: 17

Dilettante_Pro Ну да выглядит неплохо, только опять таки, как вернуть объект в первозданный вид? Придется опять проходить по всему полученному с помощью JSON.parse объекту чем то типа eval, которым по хорошему вообще лучше не пользоваться.. неужели нет какого-то более .. эммм .. готового решения/библиотеки ?((

Последний раз редактировалось who_cares_?, 13.01.2017 в 15:54.
Ответить с цитированием
  #13 (permalink)  
Старый 13.01.2017, 16:49
Аспирант
Отправить личное сообщение для TestUser013 Посмотреть профиль Найти все сообщения от TestUser013
 
Регистрация: 13.07.2013
Сообщений: 94

who_cares_?,
Никто такими извращениями не занимается....
Ответить с цитированием
  #14 (permalink)  
Старый 14.01.2017, 18:54
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,005

В общем случае функции сериализовать нельзя.
Во первых, функция может быть создана методом bind(), тогда она будет выглядеть примерно так: "function () { [native code] }"
Во вторых, функция при своем создании может замыкать переменные, тогда строка будет правдоподобной, но всё равно бесполезной.

Потому задача сомнительная. Надо смотреть как функции появились. Пришли с сервера? они уже строки. Были как-то созданы с замыканием? Надо отдельно сохранять замыкания.


Хотя, если функции простые и используют только this и глобалы, то сериализуй и забудь тот бред, который я тут написал =)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При вызове локальной функции объекта не могу использовать свойства объекта Gudsaf Общие вопросы Javascript 7 17.09.2016 20:23
Canvas. Как сделать или вообще нельзя? Вращение рандомизированно изменяемого объекта. Zemsky Общие вопросы Javascript 30 19.12.2013 19:44
Сериализация сложного js объекта uncher4 AJAX и COMET 14 25.10.2013 19:03
Скрипт вычисления координат объекта banderasantonio197555 Events/DOM/Window 4 16.08.2011 17:37
Можно ли получить имя экземпляра объекта внутри самого объекта? Ichigeki Общие вопросы Javascript 9 14.11.2008 19:00