Stringify JS Object to JSON (есть функции, которые преобразуют в свойство) - PullRequest
1 голос
/ 24 июня 2010

Есть ли функция или библиотека, которая возьмет объект JS со свойствами и функциями и переведет его в JSON, но когда дело доходит до функции, она изменит его в свойство и вызовет функцию, чтобы вернуть ее значение ??

function object() {
    this.property = 12;
    this.function = function() { return "This"; }
} 

Таким образом, это будет выглядеть следующим образом:

{property: 12, function: "This"}

Есть идеи?Просто любопытно, если он уже есть ... если нет, я сделаю удар.Расширять JSON.stringify () не должно быть сложно.

Ответы [ 2 ]

2 голосов
/ 24 июня 2010

Некоторые объекты не имеют тривиальной сериализации. Если вы хотите, чтобы вы их сериализовали, вы должны сделать это самостоятельно, используя собственный набор предположений.

Функции (особенно с замыканиями) и IO Streams - некоторые примеры. В случае JS-функции сериализация (без сериализации всего контекста!) Нарушает семантику функции по отношению к контексту выполнения и цепям контекста. Кроме того, возможность получения помощи от браузера для возврата «текста» функции зависит от браузера.

1 голос
/ 24 июня 2010

Метод JSON.stringify предоставляет возможность включить аргумент обратного вызова, называемый replacer, функция вызывается, передавая key и значение из В каждом свойстве вашего объекта вы можете определить значение function и вызвать его:

var obj = {
  "property": 12,
  "function": function() { return "This"; }
};

JSON.stringify(obj, function (key, value) {
  if (typeof value == 'function') {
    return value();
  }
  return value;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...