Я искал способ сделать это, но не могу найти ничего, у меня есть разные объекты конфигурации, которые мне нужно сохранить как текст в переменных для некоторых обработка позже, вот пример:JavaScript - Сохранить объект с помощью методов в виде строки
объект:
args.config.config = {
next: null,
final:[],
delimiter: '~', header: false,
step: function (row) {
var item = {
'line_code': row.data[0][0],
'order': row.data[0][1]
}
args.config.config.final.push(item);
},
complete: function (result) {
console.log('Reading data completed. Processing.');
return args.config.config.next(null, args.config.config.final);
},
error: function() {
console.log('There was an error parsing');
}'
}
мне нужно сохранить это как строку, так что-то вроде:
args.config.config = "{object goes here}";
Не помещая все на одну гигантскую линию или добавляя символы линии прерывания, поскольку это будет проанализировано позже, чтобы использоваться в конфиге, и это испортит все идеи?
UPDATE: Так их изменения в текст не может быть лучшим решением, эти конфиги будут храниться в базе данных Монго, поэтому она может принимать их как есть (я не пробовал еще).
Одна из других проблем, я впадающих в том, что в объекте конфигурации у меня было так:
final.push(item)
и
return next(null, final)
, которые будут определены в другом файле с помощью объекта конфигурации:
другой файл:
exports.parse = function(args, next){//next is what I need to call in the config
var final = []; //this is the final referred to in the config object
....
Baby.parse(data, args.config)
}
Итак, возвращение следующего (нулевого, окончательного) и final.push (результата) должно передать функцию var/в новом файле, но я понятия не имею, как заставить это работать, вот почему я пришлось добавить последний массив в объекте конфигурации и нуль следующей функции, а затем назначить его следующим образом:
exports.parse = function(args, next){
args.config.next = next;
....
Baby.parse(data, args.config)
}
объект звала его уродливой линии:
return args.config.config.next(null, args.config.config.final);
Если кто-то имеет Кстати, это было бы очень признательно.
Почему объекты должны быть текст для того, чтобы хранить для последующего использования? –
Вы не можете из-за функций ... Можете ли вы сказать строки/числа в другом объекте и использовать функцию эти значения? – epascarello
Термин для того, что вы хотите сделать, это «сериализовать». Существуют целые библиотеки, посвященные сериализации и десериализации объектов с помощью их методов. Наиболее распространенный подход - определить объект как экземпляр класса, сохранить имя класса как часть сериализации, а затем при десериализации восстановить экземпляр класса, возможно, используя понятие «фабрика классов», которая может создавать экземпляр объект, основанный на имени класса, вместе с его методами, из данных. –